数据结构,双指针法介绍 + 练习,习题都来自leetcode ,golang实现 ...
分类:
其他好文 时间:
2020-05-31 19:57:32
阅读次数:
54
题意: 给出一串初始值全为0的序列,每次操作找到最长的连续为0的子区间,如果有并列则取靠左的那个,修改区间的中间值为对应操作的编号,询问最后的序列状态。 题解: 枚举最大子区间,一开始想到的是双指针法,结果TLE了,看了网上的题解才知道可以利用题目的性质用优先队列做,太神奇了。。。 #include ...
分类:
其他好文 时间:
2020-05-16 17:03:50
阅读次数:
129
力扣题解 26th 删除排序数组中的重复项 双指针法/游标思想 定义: i i为游标,它代表了答案序列的脚步。j用来探测当前序列后面的数字是否与i位置的数字相同,若相同就跳过,若不同就让它覆盖下一位置的元素。 ...
分类:
编程语言 时间:
2020-05-10 15:11:29
阅读次数:
69
题目: 有序链表转换二叉搜索树:给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 思路: 看到二叉树要想到用递归的思想,为了找到根节点,使用双指针法,快指针是慢指针速度的二倍,快指针到 ...
分类:
编程语言 时间:
2020-05-03 21:42:05
阅读次数:
94
双指针法 思路: 参考三数之和,在外面多嵌套一层 代码: class Solution: def fourSum(self, nums: List[int], target: int) -> List[List[int]]: if len(nums) < 4: return [] output = ...
分类:
其他好文 时间:
2020-04-30 14:00:37
阅读次数:
54
双指针法 思路: 首先对原数组进行排序,然后从头开始遍历,当遇到nums[i]>0时终止。在遍历过程中,对遍历元素i后面剩余子数组首尾添加指针L和R,通过移动LR找到满足题设条件的[i,L,R]。这里要注意的是,为了避免重复的情况,在遍历过程中,如果遍历的元素nums[i]和它之前元素nums[i- ...
分类:
其他好文 时间:
2020-04-27 13:21:53
阅读次数:
56
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。 注意:答案中不可以包含重复的三元组。 class Solution { public: vector<vector<int> > t ...
分类:
其他好文 时间:
2020-04-12 18:48:52
阅读次数:
63
算法介绍 + 算法简介:尺取法,又名two pointers(双指针法),是一种简洁而有效的dp优化算法,常见于将时间复杂度O($n^2$)的一般dp优化为O(n)。 + 适用条件:限制变量随着指针的单向移动,而呈单调变化。 + 实现细节: 1. 申请两个指针$p_1$,$p_2$。 2. 固定$p ...
分类:
其他好文 时间:
2020-03-05 20:52:17
阅读次数:
75
一:题目简介以及来源 来源于leetocode125。 这个题目说的是,给你一个字符串,你要判断它是否是回文字符串。字符串里只考虑字母和数字,其它的字符可以无视。另外,对于字母,可以忽略大小写。 二:解题思路 1.看到判断是否为回文字符串肯定要想到双指针法,一个指向字符串的头部,一个指向字符串的尾部 ...
分类:
编程语言 时间:
2020-03-05 13:51:37
阅读次数:
85
本篇博客旨在总结双指针法在剑指offer链表题中的应用 包括删除链表中重复的节点、链表中倒数第k个节点、链表中环的入口节点、反转链表、合并两个排序的链表、两个链表的第一个公共节点。 根据双指针的类型,可以大致分为三种: 第一种是间隔一定距离的双指针法,包括删除链表中重复的节点、链表中倒数第k个节点两 ...
分类:
其他好文 时间:
2020-03-04 22:43:21
阅读次数:
80