LeetCode刷题笔记
来源:互联网 发布:天刀妖娆御姐捏脸数据 编辑:程序博客网 时间:2024/04/28 20:23
21. Merge Two Sorted Lists
该题可以看作是链表归并排序的其中一个步骤(合并两个已排序的链表),实质是对两个链表进行插入排序。比较两个链表当前节点的大小,中间节点指向较小节点,较小节点再指向下一个节点。可以用递归进行
public class Solution { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { if(l1==null) return l2; if(l2==null) return l1;if(l1.val < l2.val){l1.next = mergeTwoLists(l1.next, l2);return l1;} else{l2.next = mergeTwoLists(l1, l2.next);return l2;} }}
136. Single Number
题目比较简单,一开始的思路就是先对数组进行排序,然后循环遍历比较数组中的偶数位与前后数值的大小(唯一数只可能出现在偶数位),如果都不相同就是结果,代码如下:
public class Solution { public int singleNumber(int[] nums) { if(nums.length==1) return nums[0]; Arrays.sort(nums); if(nums[0]!=nums[1]) return nums[0]; for(int i=2;i<nums.length-2;i=i+2) { if(nums[i]!=nums[i-1]&&nums[i]!=nums[i+1]) return nums[i]; } return nums[nums.length-1]; }}
虽然可以AC但效率比较低,而且从题目来看应该更聪明的方法。仔细思考了一下,发现可以用异或来实现,对于某个数X与自身的异或为0,而该数与0的异或为自己。代码如下:
public class Solution { public int singleNumber(int[] nums) { int result =0; for(int i=0;i<nums.length;i++) { result=result^nums[i]; } return result; }}
0 0
- Leetcode刷题笔记
- LeetCode刷题笔记
- LeetCode刷题笔记
- leetcode刷题笔记
- [LeetCode] 刷题笔记(一)
- [LeetCode]刷题笔记二
- [leetCode]刷题笔记三
- LeetCode刷题笔记一
- LeetCode刷题笔记二
- LeetCode刷题笔记三
- [LeetCode刷题笔记] 关于LeetCode的前言
- leetCode刷题笔记(六)
- leetcode刷题笔记-two sum
- leetcode刷题笔记-ZigZag Conversion
- leetcode刷题笔记-Reverse Integer
- LeetCode刷题笔记 01 Two Sum
- LeetCode刷题笔记 07 Reverse Integer
- [leetCode刷题笔记]2017.01.27
- Developer Guides——AsyncTask
- 设计模式之工厂方法模式
- 一个测试工程师面试结束后想说的
- JavaScript 对象学习笔记(中)
- 一个简单的最大流算法
- LeetCode刷题笔记
- 【cas】配置运行简单的cas程序
- Android RxJava 初步接触
- Maven构建SpringMVC项目实现注解、数据库事务管理及存储过程操作
- Java 学习笔记_1`
- [hdu 4552] 怪盗基德的挑战书
- 深入理解DOM中的事件对象
- Menu(菜单) onCreateOptionsMenu 与 onCreateContextMenu 使用
- 树(2)求二叉树结点最大距离