其他分享
首页 > 其他分享> > leetcode刷题记录之25(集合实现)

leetcode刷题记录之25(集合实现)

作者:互联网

题目描述:

给你链表的头节点 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