随笔分类 -  leetcode(力扣刷题)

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