
双指针
FiveWords
努力变强!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
leetcode-42 接雨水
题目描述 题目代码 栈的使用 public int trap(int[] height) { if(height==null || height.length==0){ return 0; } int res = 0; Stack<Integer> s = new Stack<>();...原创 2020-04-02 20:42:53 · 157 阅读 · 0 评论 -
leetcode-19 删除链表的倒数第N个节点
#题目描述 1.先遍历一遍,计算链表长度,那么倒数k,就可以转化为整数n-k+1,那么找到n-k节点就是删除节点的前一个节点 2.双指针,头指针前进k,尾指针开始前进,保持gap,那么头指针为空,尾指针就是删除节点的前一个节点 java代码1 public ListNode removeNthFromEnd(ListNode head, int n) { ListNode dumm...原创 2020-03-14 21:31:53 · 146 阅读 · 0 评论 -
leetcode-18-四数之和
题目描述 该题与三数之和相同,在外嵌一层循环即可,但是这个题目容易超时,需要在第一和第二层循环判断最大值和最小值与target的关系,来减少循环次数。 Java代码 public List<List<Integer>> fourSum(int[] nums,int target){ /*定义一个返回值*/ List<List<In...原创 2020-03-14 21:16:23 · 115 阅读 · 0 评论 -
leetcode-16 最接近的三数之和
题目分析 这个题目与三数之和的题目非常类似,是同一个题目,只要记录最大的差值,然后返回就好了 Java代码 public int threeSumClosest(int[] nums, int target) { Arrays.sort(nums); int span = Integer.MAX_VALUE; boolean flag = true;...原创 2020-03-10 22:59:05 · 98 阅读 · 0 评论 -
leetcode-15 三数之和
题目分析 该题目利用双指针加排序 该题目的难点在于去除重复 那么如何去除重复呢? 除去重复的第一个元素i 对于每一个i,除去重复的l和r Java代码 public List<List<Integer>> threeSum(int[] nums) { List<List<Integer>> res = new ArrayList&...原创 2020-03-10 16:22:23 · 155 阅读 · 0 评论 -
leetcode-11 盛水最多的容器
题目关键 使用双指针解决这个问题:由于面积取决于边长短的那一端假设为m,所以要想得到比当前更大的面积,边长短的那一端必须舍弃,因为如果不舍弃,高最大就是m,而随着指针的移动宽会一直减小,因此面积只会越来越小。 Java代码 public int maxArea(int[] height) { int max_area = 0; int l = 0; ...原创 2020-03-09 18:46:21 · 102 阅读 · 0 评论 -
剑指offer 链表中倒数第K个节点
题目描述 输入一个链表,输出该链表中倒数第k个结点。 题目分析 首先想到的是,遍历一遍链表,得到链表长度n,那么正数n-k+1即为所求,但是这时候需要遍历两遍链表,那么有没有遍历一边链表的方式吗? 答案是,有的. 我们可以使用双指针来解决这个问题,保证指针之间的距离为k,前指针到链表尾null时,后指针正好为第n-k+1个节点 java代码 public class ListNode { ...原创 2020-02-01 22:49:52 · 123 阅读 · 0 评论