[Java/C#] Single loop minimalistic readable code w/ comments & explanation
Example :  list1 = [0,1,2,3,4,5], a = 3, b = 4, list2 = [1000000,1000001,1000002]\n\t\n\t- - Pick the previous node where a = 3th . prevStart = 2\n\t- - Pick th
**Example :  list1 = [0,1,2,3,4,5], a = 3, b = 4, list2 = [1000000,1000001,1000002]**\n\t\n\t- - Pick the previous node where a = 3th . prevStart = 2\n\t- - Pick the after node where b = 4th . postEnd = 4\n\t- - Then assign node 2 -> list2 and find last node of list2\n\t- - Then assign to the last node to rest of the list1. 2 -> list2 ->5\n\t\n```\npublic ListNode mergeInBetween(ListNode list1, int a, int b, ListNode list2)\n        {\n\t\t\tListNode cur = list1, prevStart = null, postEnd = null;\n\n            while (cur.next != null)\n            {\n\t\t\t\t// find previous node from where removing start\n                if (--a == 0)\n                    prevStart = cur;\n\t\t\t\t\n                if (b-- == 0)\n                {\n                    postEnd = cur.next;  // find after the removing node\n                    cur = prevStart;  // cur node assign to the start position of remove\n                    prevStart.next = list2; // assign list2 from the start position of removing\n                }\n                cur = cur.next;\n            }\n            cur.next = postEnd; // assign remain nodes of list1 \n            return list1;\n        }\n```
['Linked List', 'Java']