随笔分类 - leetcode(力扣刷题)
摘要:[编程题] lc:三数之和 (借助哈希表) 需求 输出输出 思考 如果用三个for遍历的话,会出现时间复杂度是O(n的3次方) 考虑使用两层for确定2个数,第三个数在哈希表中确定是否有。 在确定第三个数的时候,需要判断这个数的下标是否是i指向的值,或者是j指向的值。如果是的话,这个数不少我们想要的
阅读全文
摘要:[编程题] 基础:如何使用大顶堆和小顶堆找topN 需求 (1)我们如何从一个链表或者数组中,找到第k大的数,或者前k大的数。使用小顶堆。(输出是从小到大排列的前K大的数) (2)我们如何从一个链表或者数组中,找到第k小的数,或者前k小的数(输出的堆是堆顶最大,其他不是序列顺序),使用大顶堆。 小顶
阅读全文
摘要:[编程题] lc:剑指 Offer 54. 二叉搜索树的第k大节点 [编程题] JZ:剑指 Offer 62. 二叉搜索树的第k小节点 <1>题目1 描述: 输入输出 思路 根据二叉搜索树的特点: 根据二叉搜索树的特点,中序遍历是从小到大排序,求第k小恰好是第k个节点,我们按照左 根 右 搜索。(搜
阅读全文
摘要:[编程题] JZ65 矩阵中的路径 题目描述 输入输出案例 参考 参考 思路 使用回溯、递归、枚举的思想 代码 class Solution { public boolean exist(char[][] board, String word) { //用于标记是否已经被访问的二维数组 boolea
阅读全文
摘要:[编程题] JZ57 二叉树的下一个节点 题目描述 参考 参考讲解 思路 主要根据中序遍历二叉树的特点: 如果此节点有右子树,就循环找出该右子树的最深处的左子树。 如果此节点无右子树,则返回的就应该是其父亲节点(这里存在一直往上返回其父节点。) 代码 /* public class TreeLink
阅读全文
摘要:[编程题] JZ4 重建二叉树 参考 参考讲解 思路 我们根据前序遍历的首节点就指定二叉树的根,我们在中序遍历中查找这个根,就可以把中序遍历分为两部分,即左子树和右子树。那么,我们知道了左子树的长度,我们也可以在前序遍历中知道前序遍历中左子树的数组范围。此时: 我们知道了前序遍历中的左子树的子数组,
阅读全文
摘要:[编程题] lc:703. 数据流中的第K大元素 题目描述 输入输出 思路 使用一个小顶堆,我们始终让小顶堆自平衡的调整保存需要的前k大小的元素,(堆顶元素最小,也就是这组数组的第k)。在我们添加一个元素进来的时候,只需要和堆顶元素比较,如果要添加的val比堆顶元素都小的话,就丢弃,如果比堆顶元素大
阅读全文
摘要:[编程题] lc:128. 最长连续序列 题目描述 输入输出 见上 思路 逐个的拿出数组中的元素,把它假想为是最小的数。然后累加1且去哈希表中找是否有,如果有count就加1、然后知道set中没有的时候得出本次count的值。又一次拿出数组中的第2个元素执行如上操作。最终返回一个最长的count值。
阅读全文
摘要:[编程题] lc:674. 最长连续递增序列 题目描述 给定一个未经排序的整数数组,找到最长且连续的的递增序列,并返回该序列的长度。 输入输出 思路 Java代码 class Solution { public int findLengthOfLCIS(int[] nums) { //极端条件 if
阅读全文
摘要:[编程题] lc:面试题 03.05. 栈排序 题目描述 输入输出 思路 主要思路: 利用一个辅助栈来帮助在插入一个元素的时候进行排序,使得我们的主栈内元素始终是有序的(栈底到栈顶大到小),当push一个元素到主栈的时候,实在先看主栈栈顶元素。 如果栈顶元素小于当前val,利用辅助栈将主栈栈顶元
阅读全文
摘要:[编程题] lc:最小路径和 题目描述 输入输出 思路 原地动态 规划 Java代码 class Solution { //方法:原地dp的动态规划 public int minPathSum(int[][] grid) { for(int i=0;i<grid.length;i++){ for(i
阅读全文
摘要:[编程题] lc: 面试题 10.09. 排序矩阵查找 时间:2020.07.23 题目描述 给定M×N矩阵,每一行、每一列都按升序排列,请编写代码找出某元素。 输入输出案例 思路 从矩阵的右上角的元素开始找,右上角的元素与target比较: 如果右上角的元素和target相等,返回true 如果右
阅读全文
摘要:[编程题] nk:链表中的入环节点 题目描述 输入输出例子 无 思路 方法1、借助哈希表 思想:我们通过一个dummyNode不断遍历每一个节点,当我们每次遍历到这个当前节点的时候就看他在不在哈希表中,不在的话加入进去;在的时候就恰好这个节点就是入环节点。 时间复杂度:O(n) Java代码 imp
阅读全文
摘要:[编程题] lc:167. 两数之和 II - 输入有序数组 题目描述 .assets/image-20200721115631557.png) 输入输出例子 见上 思路 方法1、暴
阅读全文
摘要:[编程题] lc:剑指 Offer 14- I. 剪绳子 题目描述 输入输出例子 思路 方法1、从数据公式上探索 Java代码 class Solution { public int cuttingRope(int n) { //情况1:对于两种极端情况先讨论 if(n==1 || n==2){re
阅读全文
摘要:lc 剑指 Offer 09. 用两个栈实现队列 题目描述 输入输出描述 思路 1、使用传统的栈Stack即可完成 2、使用Deque数据结构堵住一端(堵住首) (addLast(),removeLast) 或者堵住尾(addFirst();removeFirst) 3、使用Deque数据结构堵住一
阅读全文
摘要:[编程题] lc:20. 有效的括号-考察栈 题目描述 输入输出例子 思路 思路 使用栈结构,用map保存匹配键值对(LinkedList实现Deque接口模拟栈) Java代码 class Solution { public boolean isValid(String s) { //借助栈 De
阅读全文
摘要:[编程题] lc:24. 两两交换链表中的节点 题目描述 输入输出例子 思路 参考:https://www.bilibili.com/video/BV1VC4y1s75E?from=search&seid=7587439253853836582 先构造一个dummy节点,指向和连接这个链表。再使用这
阅读全文
摘要:[编程题] lc:344. 反转字符串 题目描述 输入输出例子 方法1:前后指针 Java代码 //方法1:前后指针的交换元素 public void reverseString1(char[] s) { int l = 0; int r = s.length-1; while(l<=r){ cha
阅读全文
摘要:[编程题] lc:344. 反转字符串 题目描述 输入输出例子 方法1:前后指针 Java代码 //方法1:前后指针的交换元素 public void reverseString1(char[] s) { int l = 0; int r = s.length-1; while(l<=r){ cha
阅读全文

浙公网安备 33010602011771号