Hi,
If it is mandatory to have code to clone the record then you may refer the links provided below:
Clone Record
Clone Record 2
Otherwise I would suggest to have a dialog on existing record which can take a input for the new Lead record name and then trigger a workflow which can utilize the existing fields and update them into the new lead record. I hope it will be simple enough
to use the OOB functionality of CRM.
I hope this should resolve your query.
Thanks & Regards,
Anubhav Bajpai