范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

3分钟学个算法链表反转

  题目描述
  输入一个链表,反转链表后,输出新链表 的 表头。
  输入 {1,2,3,4,5}
  返回值 {5,4,3,2,1} 解题
  初拿到这题,很容易联想到反转系列用java的api中提供了几个类似的api如 Collections.reverse() 和StringBuilder.reverse() 。他们提供了直接对集合、字符串的反转api。需要的就是根据链表构建集合,再将集合反转,反转后再重新构建链表指向关系。代码如下:public static ListNode reverseByList(ListNode head) {         //方法先判断入参         if (head == null) {             return null;         }         //只有一个元素的直接返回         if (head.next == null) {             return head;         }         List  list=new ArrayList<>();         while(head!=null){             list.add(head);             head=head.next;         }         //直接使用Collections的reverse反转         Collections.reverse(list);         // 反转后重建指向关系         for(int i=0;i list){          // 如果只有0或者1个元素,不需要做处理          if(list.size()<=1){              return;          }          int size=list.size();          int half=(size-1)>>1;       //从中号位遍历到0号位,将i位与size-1-i位进行互换实现集合的反转          for(int i=half;i>=0;i--){              ListNode temp=list.get(size-1-i);              list.set(size-1-i,list.get(i));              list.set(i,temp);          }      }
  对于链表反转,上面链表反转思路是转为集合,对集合进行互换位置反转,然后再重建指针指向。还有一种只针对链表反转更有效的方式,即直接改变指针指向即可。用一个pre保持指向之前的节点的指针,用一个current指针指向当前遍历节点。直接改变当前指针的指向,由指向下一个节点改造为指向前面的节点。原理图如下:
  代码实现如下:   public static ListNode reverseLinkNode(ListNode head) {           //方法先判断入参           if (head == null) {               return null;           }           //只有一个元素的直接返回           if (head.next == null) {               return head;           }       // 用于保持之前的指针,便于current指向           ListNode pre = null;           ListNode current = head;           //temp用于保持当前节点的下一个节点的指针,使得遍历继续           ListNode temp;           while (current != null) {               temp = current.next;               current.next = pre;               pre = current;               current = temp;           }           //因为循环终止条件是到最后current为null了,链表的头节点应该是pre,即最后一个非空节点           return 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 -

硬知识与高趣味携手,极限挑战宝藏行如何促成一对完美CP?公益科普记录与综艺旅行游戏,若要放到以前,总觉得有些割裂感。前者包含严肃的倡导和教育性质,后者则有轻松愉悦的娱乐性质。有意思和有意义在文艺节目中相结合,好比是让冷兵器与魔法在同一个掀翻顶流完美人设,我就服他悲报等了两年的西行小队,刚回归就团!灭!了!龙王亲自追杀,猪八戒沙悟净纷纷开启狂暴状态,还是对抗不了三招,一个被烧成烤猪,一个被打散身体,神形俱灭。绝对力量的压制,恐怖如斯。更可怜终评就冲这两点,我要为并不完美的前行者喝彩幽灵般的叛徒裴如海淹死海中,法租界巡捕房密档忏悔录落入我手。昨晚,电视剧前行者上演了大结局。在同期播映的剧目中,它可能不是收视指数和网络热度最高的,但它是从剧本到影像完成度最高,对孩子阅读关键5年,聪明的妈妈,懂得逼他一把夏天,气温一天天上升。眼看有的城市,因为疫情孩子还没开学,有的地方,孩子们快放暑假了。对于孩子来说,宅在家里不用上学,做什么才能不让时间浪费呢?我推荐你选一些经典又有趣,孩子们都喜爱奇艺编剧之夜办到第二届,三个关键词见深意爱奇艺已经走过了十一年。漫漫十一年里,爱奇艺在内容创制和商业模式上做了许多尝试,俨然成为了一个行业破局者与引领者。只有破局才能引领,这是一枚硬币的两面。比如从前我们没有垂直细分的精他是最可恶的奴才,坏事做尽,却在关键时刻萌生了一丝善念贾府有很多恶奴才,仗着主子横行霸道,这些人里面,属王熙凤的心腹来旺最坏。王熙凤本就毒辣,来旺跟着王熙凤,做尽了坏事。王熙凤放高利贷铁槛司弄权撺掇张华告状等等,执行这些事的人都是来旺冷子兴是贾家败落的关键人物,王熙凤的判词里就提到过他贾元春省亲的时候点了四出戏,第一出叫做家宴,是一个折子戏,是一捧雪这出戏里面的一折。一捧雪是一个古董,一个像白雪一样的玉器,拿到手里面像一捧雪一样,非常珍贵。一捧雪是有典故的,是清玉楼春许凤翘设局,林少春能巧妙化解,这3点很关键俗话说三个女人一台戏,那玉楼春简直是好多台戏了,这是一部女性群像宅斗戏,精彩极了!剧中每个人物身上都有独特的点,显然是对手的是许凤翘(金晨饰)和林少春(白鹿饰),从而牵扯进其他人而薛之谦遭全网撕,高磊鑫依然潇洒自在,娱乐圈真夫妻还剩几对?薛之谦在最后一次声明中表示,不再回应李雨桐事件,但是网友对此事热度不减,29日,高磊鑫发微博,网友火速围观,但却是自己的生日祝福,网友不仅感叹,高磊鑫你真的不用关心一下薛之谦么?娱文章颓废状态被曝,与马伊琍离婚后借酒消愁,当街搂女助理潇洒在7月28日两人各自和平分手,并同步发博发出此事,对于这次的离婚消息,网友们以及粉丝也是非常的意外,十一年的婚姻就这样以各自的一句话结束了,然而在爱情面前,这些事情真的是不知道会不于月仙离世早已被注定?头七当天,被好友道出生前诡异事件于月仙头七当天,好友王小宝的一句话,将于月仙去世的原因,变成了一起诡异事件,8月15日,于月仙去世的第七天,在乡村爱情中,饰演谢大脚老公长贵的王小宝,在直播中谈起于月仙哽咽落泪,他
长颈鹿与金合欢,生生世世相爱相杀,你来我往奇招百出一斗百万年在非洲广阔的稀树草原上,长颈鹿和金合欢树简直就是那里的标志性景色,有长颈鹿的地方,往往就会有金合欢树,而有金合欢的地方往往也少不了长颈鹿,这两者为什么那么相爱呢?你或不知道它们之间新加坡讨债者又有奇招!同时点几个外卖到家门口,让你付钱新加坡的大耳窿是什么?就是我们俗称的高利贷。在新加坡,做大耳窿非法借贷是犯法的。但总是有人有借钱的需求却无法从银行借到钱,只能去找大耳窿。借了钱能还上的,就相安无事。要是还不上,电怎么才能让酗酒者成功戒酒?谷三妹给出了一记奇招以醉治醉作者墨舞盈屏老酒馆第35和36集里,又出现了一个槽点。要想让酗酒者成功戒酒,给你一记妙招以醉治醉。这个看似挺见效的方法,是谷三妹想出来的,最终成功拯救了两个中毒已深的酒鬼。这到底是盘点艺人做带货直播奇招百出,有人疯狂暴吃,有人劲赚九千万未经授权严禁转载,发现抄袭者将进行全网投诉近年不少艺人纷纷在社交平台做带货主播,尤其是内地市场最为旺盛,一个晚上带货,即使你是像戴耀明这些在香港的绿叶演员,也可以有几万港元的酬劳,奇招!宝妈为防孩子玩手机,给画了俩黑眼圈一下午不敢碰手机暑假过半,神兽们一天24小时都呆在家也让很多父母直呼吃不消,尤其现在外界情况复杂,不少家长也不敢带孩子出门旅游,孩子天天在家除了玩手机ipad就是看电视。家长不让看,孩子总有各种办中餐厅4杨超越超有梗,还是押韵鬼才,说唱完胜刘宇宁杨超越从火箭少女101毕业后,她直言终于解脱了,两年下来,她每天都在跳舞的噩梦中醒来,从小没有舞蹈基础的她,就算再努力,也无法跟上同团的队友。虽然离开这个团,她有些不舍,但更多的还杨超越不想恋爱,姑娘,既要谋生,也要谋爱01。hr她在哭,而我们却被她的哭逗笑了。说的就是杨超越。火箭少女告别演唱会上,晚会的最后一个环节,女团成员告别火箭少女,发表未来宣言。轮到表演时依旧做错动作从晚会开始到结束都无比杨超越醉酒后喊爸妈,人前风光无限,背后却有不为人知的心酸杨超越新剧本月在横店开机,日前,有媒体在横店遇到杨超越和曾舜晞等人一起聚餐。当天导演过生日,工作应酬后的杨超越明显喝多了,从酒店出来的时候连站都站不住,由一个黄衣女同事一直搀扶着。杨超越怼薛之谦,你的玩笑不好笑,有愧于良心01。hr薛之谦杨超越等明星艺人参加的一个助力复工复产具有公益性质的综艺节目,最近播出了,然而薛之谦的一句话,他自己说是玩笑,却让自己翻车了。节目中明星们体验择菜,中途薛之谦开玩笑你是我的荣耀2个道具细节太赞,一个号码成最大未解之谜你是我的荣耀这部剧是今夏最浪漫的现偶剧了,口碑热度双丰收,有许多话题都是剧集一播出就上了热搜榜的。比如于途体制内男友于途无辜的眼神让人破防还有就是道具有多用心,这部剧剧情很重细节,万事大吉随笔4则走进秋天秋美情深枫红柔曼秋思绵绵(一)走进秋天走进秋天,触摸一地飘零的思念,迎接一树落花的烂漫。一份缓缓的厚重,在堆满落叶的忧伤中,解开岁月埋藏在心中的所有凉寒。秋夜的清辉,穿过心灵深处的一抹柔软,在一弯明净的寂