城市直播房产教育博客汽车
投稿投诉
汽车报价
买车新车
博客专栏
专题精品
教育留学
高考读书
房产家居
彩票视频
直播黑猫
投资微博
城市上海
政务旅游

3分钟学个算法链表反转

7月7日 辞凤阙投稿
  题目描述
  输入一个链表,反转链表后,输出新链表的表头。
  输入{1,2,3,4,5}
  返回值{5,4,3,2,1}解题
  初拿到这题,很容易联想到反转系列用java的api中提供了几个类似的api如Collections。reverse()和StringBuilder。reverse()。他们提供了直接对集合、字符串的反转api。需要的就是根据链表构建集合,再将集合反转,反转后再重新构建链表指向关系。代码如下:publicstaticListNodereverseByList(ListNodehead){方法先判断入参if(headnull){}只有一个元素的直接返回if(head。nextnull){}ListListNodelistnewArrayList();while(head!null){list。add(head);headhead。}直接使用Collections的reverse反转Collections。reverse(list);反转后重建指向关系for(inti0;ilist。size()1;i){list。get(i)。nextlist。get(i1);}链表最后一元素的next置为空list。get(list。size()1)。returnlist。get(0);}
  上面的方法确实能解决问题,但是一般出到这题,考的不会是你的api的熟练程度,面试官一般会要求你自己实现反转过程。对于集合的反转,自己实现的通用算法是index为i的和index为size1i的元素位置进行对调进行实现。集合原理图如下:
  集合反转代码实现如下:publicstaticvoidreverseList(ListListNodelist){如果只有0或者1个元素,不需要做处理if(list。size()1){}intsizelist。size();inthalf(size1)1;从中号位遍历到0号位,将i位与size1i位进行互换实现集合的反转for(i0;i){ListNodetemplist。get(size1i);list。set(size1i,list。get(i));list。set(i,temp);}}
  对于链表反转,上面链表反转思路是转为集合,对集合进行互换位置反转,然后再重建指针指向。还有一种只针对链表反转更有效的方式,即直接改变指针指向即可。用一个pre保持指向之前的节点的指针,用一个current指针指向当前遍历节点。直接改变当前指针的指向,由指向下一个节点改造为指向前面的节点。原理图如下:
  代码实现如下:publicstaticListNodereverseLinkNode(ListNodehead){方法先判断入参if(headnull){}只有一个元素的直接返回if(head。nextnull){}用于保持之前的指针,便于current指向ListNListNtemp用于保持当前节点的下一个节点的指针,使得遍历继续ListNwhile(current!null){tempcurrent。current。}因为循环终止条件是到最后current为null了,链表的头节点应该是pre,即最后一个非空节点}
  还有没有其他思路?在集合反转的时候除了交换对称位置的元素,如果想到stack的FILO特性,也很方面的使用stack进行反转集合,但是要额外使用一个n大小的栈空间。时间复杂度都是O(n)。java中需要用栈可以用LinkedList实现。总结
  对于链表反转主要两种思路:
  一个是直接改变链表节点指针实现,即原先指向下一个节点的指针改为指向前一个节点,这种时间复杂度是O(n),空间复杂度是O(1),一次遍历完成,效率较高。
  另一种即将链表转为集合,可以用Java的Collections。reverse()直接反转或者用交换头尾元素的思路或者利用LinkedList的FILO特性用分别用addLast与pollLast方法进行添加和删除,反转集合后重建指针指向,这类思路,时间复杂度是O(n),空间复杂度是O(n)(因为创建新的列表需要空间,栈也同样需要),针对链表反转总体效率不如第一种。
  END
投诉 评论 转载

特赦朴槿惠,文在寅为何如此艰难?关于特赦朴槿惠问题,文在寅一直不做正面回答,大都是由法务部代言。即便是在2018年面对记者直接提问,文在寅只表示心痛和含糊地以案件正在审理为由敷衍过去。2019年11月文在寅母……你是我的荣耀将定档?新物料会逐步发出,官方文案求生欲太高引言:改编自顾漫的《你是我的荣耀》的同名电视剧真是备受期待啊,每天都有粉丝在呼喊什么时候定档。杨洋和迪丽热巴迪丽热巴分别是男女主角,这两位郎才女貌超级搭配,从剧照海报就能看出来……3分钟学个算法链表反转题目描述输入一个链表,反转链表后,输出新链表的表头。输入{1,2,3,4,5}返回值{5,4,3,2,1}解题初拿到这题,很容易联想到反转系列用java……梅艳芳视草蜢为爱徒,草蜢却将她当做笑话!前段时间,人们忽然又翻出了一首老歌《失恋阵线联盟》,并且在网络上引起了不小的风潮。《失恋阵线联盟》发行于1990年,由何启弘(国语)填词,草蜢乐队演唱。虽然风格迥异,但胜……盖茨转18亿股票给前妻!婚姻财产分割或让梅琳达成世界第二女富又一位超级富豪宣布离婚。当地时间5月3日晚,比尔盖茨与梅琳达通过联合声明,宣布结束双方27年的婚姻。据福布斯富豪榜,比尔盖茨以1305亿美元(约合8447亿人民币)的身家……因为父母离婚,孩子的智商低同龄人单亲家庭下的孩子,智商真的有点低。我所接触的朋友中,离婚的还真不少。而我的老公就是千千万万个离异部队中的一员,带孩子的那种。跟老公谈恋爱的时候,继女米朵还在读幼儿园……你是我的荣耀7大美女,美出7种风格,吴倩状态最令人意外最近令人很期待的作品,莫过于是《你是我的荣耀》了。这部作品是现代剧,而且还是顾漫的小说改编的。可以说是言情界最值得期待的高甜电视剧,而在播出后,小编也对这部作品感慨颇多。……蔡徐坤和谢可寅的瓜,很小但挺甜文黑土娱乐圈最爱组CP,比如,潘玮柏和吴昕。两人曾一起参加综艺节目《我们相爱吧》,为了节目效果,他们大手牵小手,甜蜜撒糖。潘玮柏还大方示爱:和吴昕在一起的短短几天,……魔兽怀旧服祖格要来了,首次CD两天,玩家都有哪些可操作空间万众期待的祖尔格拉布副本将于4月16日早上6点与大家见面。由于各地区的时间有差异,暴雪将国服的重置时间安排在了4月18日,也就是周六的早上7点。这则消息一出,有些玩家要失望了。……狼殿下开播就结局,背后原因到底是什么?11月19日,由王为和曹华执导,王大陆、李沁、肖战、辛芷蕾、郭书瑶主演,丁勇岱、林佑威特别出演,颜世魁友情出演的古装侠义言情剧《狼殿下》开播了!因为事前没有任何征兆,因此……蒋大为的乐坛地位,了解一下中国知名男高音歌唱家,或许这就是对蒋大为最好的尊称了吧。在乐坛上,蒋大为确实可堪称是当代少有的男高音歌唱家,其演唱的《敢问路在何方》、《牡丹之歌》、《在那桃花盛开的地方》……王一博生日,粉丝打卡王一博回复肖战高仿号旧话题!可惜回不去了8月5日迎来了王一博的23岁生日,零点一过,王一博的生日动态就爆了。粉丝们排队留言送祝福,评论区满满都是感动。值得一提的是,《陈情令》导演陈家霖深夜上线发文为王一博庆生:……
龚俊为新剧换头像,你好,火焰蓝正式定档,7月8号在优酷播出花花公子许晋亨,曾经的何超琼你不珍惜,今日的她你高攀不起找到宾馆去了浅谈对改编权的侵权行为的理解和认定随笔致我们终将逝去的童年小学语文阅读教学的有效策略线下票据产品设计分享难忘的一天到底该怎么写更全面的文档范例来了适合女生开的休闲小店227中发生的这些事情,其实肖战都知道,他只是在积蓄力量微信撤回不了消息教你一招搞定百名劳模宣讲(93)丨佟明晶教育路上追梦人车企加速入场直播:先上桌比赢更重要游乌龙峡只要1699元!华为旗舰店上架新款手机支持5G四年级写景作文校园的春天与AIGLE一起享受清凉nbsp夏日必备单品都在这里面试被打断是不是就凉了还能不能过光绪宠妃珍妃死亡之谜是否是投井自杀蚊子咬了消肿慢是什么原因浅谈加强尾矿库安全管理的途径长椿寺明孝纯刘太后像10位入戏太深的演员,2位抑郁3位入空门,有人将角色占为己有

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找