在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
链表的类如下: class ListNode { public int val { get; set; } public ListNode next { get; set; } public ListNode(int _val) { val = _val; } }
方法一: 使用递归来创建,每次只选取第一个元素,逐步拼接 public static ListNode getListNode(List<int> list) { if (list.Count == 0) { return null; } ListNode ln = new ListNode(list[0]); ln.next = getListNode(list.Where((x,x_index)=>x_index!=0).ToList()); return ln; } 方法二: 使用ListNode数组,首先遍历所有节点值,创建成节点对象填充数组中,然后使用数组内部各个对象的层层拼接 public static ListNode getListNode2(List<int> list) { if (list.Count == 0) { return null; } List<ListNode> listnode = new List<ListNode>(); list.ForEach(x=> listnode.Add(new ListNode(x))); for (int i = 0; i < listnode.Count-1; i++) { listnode[i].next = listnode[i + 1]; } return listnode[0]; } 方法三: 这种思想,也是突然受到启发,从后面一点点构造对象,然后让前面的对象指向后面,然后再让前面的对象指向这个,一直到头,完成链表的创建 public static ListNode getListNode3(List<int> list) { if (list.Count == 0) { return null; } else if (list.Count == 1) { return new ListNode(list[0]); } ListNode p = new ListNode(list[list.Count-1]);//初始化为最后一个元素 ListNode t=new ListNode(list[list.Count-2]); for (int i = list.Count-2; i >=0 ; i--) { t = new ListNode(list[i]); t.next = p; p = t; } return t; }
个人推荐使用方法二和方法三,原因很简单,最好别递归哦,因为性能非常低。
|
请发表评论