标签:25 arrayList 节点 链表 add ArrayList 集合 leetcode 刷题
题目描述:
给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。
k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。
你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。
官方题解写的很简单移动,换个想法,如果用集合的话,该如何实现这道题目呢?
思路:如果我们把数组中的数据放到集合里的话,那我们肯定要先设定一个反转集合元素的函数,
然后截取集合元素的一个子集合,将其放入到反转函数中,再将剩余的元素放入到其中,集合!
代码如下:
public class reverseKGroup { public static void main(String[] args){ Integer item = 0; ArrayList<Integer> arrayList = new ArrayList<Integer>(); arrayList.add(1); arrayList.add(2); arrayList.add(3); arrayList.add(4); arrayList.add(5); arrayList.add(6);
System.out.println(arrayList);
//System.out.println(Reverse(arrayList));
System.out.println(fun(arrayList,2)); } public static ArrayList<Integer> fun(ArrayList<Integer> arrayList,int k){ if (k > arrayList.size()){ return null; } ArrayList<Integer> arrayList1 = new ArrayList<Integer>(); for (int i = 0;i<k;i++){ arrayList1.add(arrayList.get(i)); } Reverse(arrayList1); for (int i = k;i<arrayList.size();i++){ arrayList1.add(arrayList.get(i)); } return arrayList1; } public static ArrayList<Integer> Reverse(ArrayList<Integer> arrayList1){ Integer item = 0; for (int i = 0;i<arrayList1.size()/2;i++){ item = arrayList1.get(i); arrayList1.set(i,arrayList1.get(arrayList1.size()-1-i)); arrayList1.set(arrayList1.size()-1-i,item); } return arrayList1; } }
输出结果:
代母目前冗余性太强,以后还会继续优化,这里之暂时给出一个大体的解决方案!
标签:25,arrayList,节点,链表,add,ArrayList,集合,leetcode,刷题 来源: https://www.cnblogs.com/99kol/p/16634357.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。