还是和removeDuplicateinSortedArr类似的思路 循环不变式
package oj.leetcode; import data.ListNode; /* * 从loop invariant的角度去考虑这个问题。也就能在考虑问题的时候,完成了对算法在数学意义上的证明。 假设,你已经有了一个lessList,一个geList。 然后,就是不断扫描原来的list的各个node,把它们加入到上面两个list之后。 */ public class PatitionList { public ListNode partition(ListNode head, int x) { // Start typing your Java solution below // DO NOT write main() function ListNode lessHead = null; ListNode lessTail = null; ListNode geHead = null; ListNode geTail = null; ListNode p = head; while(p!=null){ if(p.val>=x){ if(geHead == null){ geHead = p; geTail = p; }else{ geTail.next = p; geTail = geTail.next; } }else{ if(lessHead == null){ lessHead = p; lessTail = p; }else{ lessTail.next = p; lessTail = lessTail.next; } } p = p.next; } if(geTail != null) geTail.next = null; if(lessTail!=null) {lessTail.next = geHead;return lessHead;} return geHead; } }
同学面试遇到的一个题目,类似思路~ 假设有两个链表 奇数位链表和 偶数位链表
package othersinteview; import data.ListNode; /* * 将链表1-2-3-4-5-…-(2n-2)-(2n-1)-(2n) * 链接成1-3-5-…(2n-1)-(2n)-(2n-2)-2,分奇偶 */ public class EvenOldList { public ListNode evenOldList(ListNode head){ ListNode evenHead = null; ListNode evenTail = null; ListNode oldHead = null; ListNode oldTail = null; boolean old = true; ListNode p = head; ListNode q = null; while(p!=null){ q = p.next; if(old){ if(oldHead == null){ oldHead = p; oldTail = p; }else{ oldTail.next = p; oldTail = oldTail.next; } old = false; }else{ if(evenHead == null){ evenHead = p; evenTail = p; }else{ p.next = evenHead;//!!!!会改变p.next的值,所以事先用q保存。 evenHead = p; } old = true; } p = q; } if(evenTail!=null) evenTail.next = null; if(oldTail!=null) oldTail.next = evenHead; return oldHead; } }
相关推荐
《使用leetcode-editor在IDE中进行LeetCode练习的全方位指南》 LeetCode是一个广受欢迎的在线编程练习平台,它提供了一系列的算法题目供程序员们提升技能。对于习惯在集成开发环境(IDE)中工作的开发者来说,将...
《Python版LeetCode题解全集详解》 LeetCode是一个广受欢迎的在线编程挑战平台,致力于帮助程序员提升技能,特别是面试准备。这个压缩包“lc-all-solutions-master”包含了使用Python语言解决LeetCode所有问题的...
"IDEA leetcode-editor插件"就是将这两者结合的工具,允许用户在IDEA中直接进行LeetCode的编程挑战,无需离开开发环境,提高了刷题的便捷性。 该插件的主要功能包括: 1. **离线模式**:在无法访问LeetCode官网的...
vs code LeetCode 插件
terminal-leetcode, 终端Leetcode是基于终端的Leetcode网站查看器 终端 leetcode终端leetcode是基于终端的leetcode网站查看器。本项目是由 RTV 激发的。 我最近正在学习本地化的反应,以实践我的新知识,并根据这个...
基于Python实现的LeetCode爬虫爬取LeetCode题目描述和提交的代码.zip ## 特点 - 支持爬取题目列表,保存为本地CSV/Excel文件。 - 支持爬取题目描述,保存为本地HTML文件。 - 支持爬取用户提交的代码,保存为如_.py...
(C++)LeetCode刷题题解答案
leetcode刷题, 直接用leetcode的分类方式.
力扣(LeetCode) 相比其他编程平台有着很多优势: **各大知名公司面试真题:**对于求职者在这上面训练更具有针对性,目前国内一些公司面试时直接从在这上面出题。 **大中小企业都在使用:**常常会直接或者间接...
LeetCode-Swift, 快速LeetCode解决方案 LeetCodeLeetCode在线判断是一个包含很多收费算法的网站。 them Google Google Google Google LinkedIn this this repo 。 请免费参考并收费STAR以支持这个 repo,
LeetCode面试笔试题
《LeetCode Editor 7.4:提升编程技能的利器》 在编程学习和实践中,LeetCode 已经成为了程序员们磨炼算法、提升编程技能的重要平台。为了方便开发者更高效地进行刷题,LeetCode 提供了官方编辑器插件——LeetCode ...
算法 Leetcode刷题手册 labuladong的算法小抄官方完整版
### LeetCode中文版知识点概述 #### 一、LeetCode简介与使用 LeetCode是一个全球知名的在线编程学习平台,主要提供各种算法题目供开发者练习。它不仅涵盖了基础数据结构和算法训练,还包括了大量的面试真题,是...
leetcode题解代码,先使用C++解题,后续学习其它语言也使用leetcode来快速学习.leetcode题解代码,先使用C++解题,后续学习其它语言也使用leetcode来快速学习.leetcode题解代码,先使用C++解题,后续学习其它语言也...
LeetCode 400题目 Java版本 (LeetCode is the platform to help you enhance your skills, expand your knowledge and prepare for technical interviews.)
leetcode 习题集, leetcode 官网出品,包含基本的算法
leetcode算法。本书包含了 LeetCode Online Judge(http://leetcode.com/onlinejudge) 所有题目的答案,所有 代码经过精心编写,编码规范良好,适合读者反复揣摩,模仿,甚至在纸上默写。 全书的代码,使用 C++ 11 的...