![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
文章平均质量分 52
Information_learning
这个作者很懒,什么都没留下…
展开
-
求解字符串的运算结果(包含括号+-*/)逆波兰式(后缀式)基本步骤
1、需要两个栈(结果String栈s1和Character辅助栈s2)2、定义优先级( + - * / 优先级分别0 1 1 2 23、遍历字符串s‘ 1、如果是数字,加入s1; 否则: 2、if 如果s2为空 或者是左括号“(” 或者 如果当前字符优先级大于栈顶优先级 ; //(可类比记忆,当栈顶为左括号的时候,肯定加入,加入的优先...原创 2021-09-10 02:19:47 · 200 阅读 · 0 评论 -
LeetCode搜索旋转排序数组
本文涉及 4 道「搜索旋转排序数组」题:LeetCode 33 题:搜索旋转排序数组 LeetCode 81 题:搜索旋转排序数组-ii LeetCode 153 题:寻找旋转排序数组中的最小值 LeetCode 154 题:寻找旋转排序数组中的最小值-ii可以分为 3 类:33、81 题:搜索特定值 153、154 题:搜索最小值 81、154 题:包含重复元素LeetCode 33 题:搜索旋转排序数组 整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函原创 2021-08-20 02:02:25 · 131 阅读 · 0 评论 -
LeetCode hot100(复习用)
题目 通过率 难度 1. 两数之和 51.8% 简单 2. 两数相加 40.7% 中等 3. 无重复字符的最长子串 37.8% 中等 1、hashMap储存位置+滑动窗口left=Math.max(left,map.get(s.cha...原创 2021-08-20 01:19:25 · 404 阅读 · 0 评论 -
dp动态规划和递归相关
https://zhuanlan.zhihu.com/p/91582909原创 2021-07-27 20:17:17 · 135 阅读 · 0 评论 -
单调栈记录
对于「找最近一个比当前值大/小」的问题,都可以使用单调栈来解决。适用场景单调栈适合的题目是求解下一个大于 xxx或者下一个小于 xxx这种题目。所有当你有这种需求的时候,就应该想到单调栈。单调栈就是在栈的基础上维护一个栈内元素单调。单调递减栈应用的两种方式:①在一个数组中针对每一个元素从它右边寻找第一个比它大的元素②在一个数组中针对每一个元素从它左边寻找第一个比它大的元素(从后往前遍历)739. 每日温度题目描述:根据每日气温列表,请重新生成一个列表,对...原创 2021-07-26 21:18:35 · 70 阅读 · 0 评论 -
LeetCode题目整理
滑动窗口题目:3. 无重复字符的最长子串30. 串联所有单词的子串76. 最小覆盖子串159. 至多包含两个不同字符的最长子串209. 长度最小的子数组239. 滑动窗口最大值567. 字符串的排列632. 最小区间727. 最小窗口子序列待完成。。。。...原创 2021-06-05 22:59:08 · 123 阅读 · 2 评论 -
LeetCode二分查找题目总结
153、154 题:搜索最小值1、寻找旋转排序数组中的最小值(题目)单调递增的序列: * * * **做了旋转: ** * * *用二分法查找,需要始终将目标值(这里是最小值)套住,并不断收缩左边界或右边界。左、中、右三个位置的值相比较,有以下几种情况:左值 < 中值, 中值 < 右值 :没有旋转,最小值在最左边,可以收缩右边界 右 中左左值 &g...原创 2021-03-28 21:40:41 · 177 阅读 · 0 评论 -
Leetcode 寻找两个正序数组的中位数 [hard] 归并和二分
题目链接:https://leetcode-cn.com/problems/median-of-two-sorted-arrays/给定两个大小分别为 m 和 n 的正序(从小到大)数组nums1 和nums2。请你找出并返回这两个正序数组的 中位数 。示例 1:输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2示例 2:输入:nums1 = [1,2], nums2 = [3,4]输出:2.5...转载 2021-03-25 01:10:50 · 92 阅读 · 0 评论 -
算法题目整理
开平方根:class Solution { public int mySqrt(int x) { int l = 0, r = x, ans = -1; while (l <= r) { int mid = l + (r - l) / 2; if ((long) mid * mid <= x) { ans = mid; //很巧妙的地方,最后一原创 2021-03-21 02:46:18 · 83 阅读 · 0 评论 -
LRU算法O(1)复杂度
请求分页系统建立在基本分页系统基础之上,为了支持虚拟存储器功能而增加了请求调页功能和页面置换功能。请求分页是目前最常用的一种实现虚拟存储器的方法。在请求分页系统中,只要求将当前需要的一部分页面装入内存,以便可以启动作业运行。在作业执行过程中,当所要访问的页面不在内存时,再通过雕爷功能将其调入,同时还可以通过置换功能将暂时不用的页面换出到外存上,以便腾出内存空间。页面置换算法的主要目标是使页面置换频率最低(也可以说缺页率最低)。常见的页面置换算法有以下几种:1、最佳置换算法(Opt...原创 2021-03-15 16:22:41 · 596 阅读 · 0 评论 -
剑指 Offer 26. 树的子结构
输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。class Solution { public boolean isSubStructure(TreeNode A, TreeNode B) { if (A==null || B==null) return false; //前序遍历,首先遍历A(判断B是否为以A为根节点的子树的子结构),遍历左子树 ,遍历右子树。原创 2021-01-17 21:19:41 · 136 阅读 · 0 评论 -
剑指 Offer 20. 表示数值的字符串
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100"、"5e2"、"-123"、"3.1416"、"-1E-16"、"0123"都表示数值,但"12e"、"1a3.14"、"1.2.3"、"+-5"及"12e+5.4"都不是。参考剑指offer (第二版)127 页 ,将数字分为几个部分 A为数值的整数部分,B为紧跟着小数点的小数部分 ,C为紧跟着e/E的指数部门。(注意 .20 1.e3 都是符合的)模式有 A[.[B]][eC]或者.B[eC],抽象了两个函数..原创 2021-01-10 17:46:17 · 134 阅读 · 0 评论 -
排列组合问题总结:(回溯法总结)
1、给定一个 没有重复 数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]先想一下模板: public void dfs(int k){ if (k==nums.length){ System.out.println(tmp); //排列完毕 打印。 r...原创 2021-01-06 13:17:40 · 361 阅读 · 1 评论 -
剑指offer 打印从1到最大的n位数
输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。1、法一:递归生成全排列,通过n和9的个数之间的关系截取。比如说生成 ...097 098 099 ... 9的个数分别为 1 1 2 。n-count 分别为2 2 1 当前的start为1,满足n - start == count 时 start向前一位,代表截取起始坐标前进一位。class Solution { StringBuilder res;...原创 2021-01-05 16:54:36 · 144 阅读 · 3 评论 -
二叉树遍历方式 总结
1、二叉树前序遍历 递归与迭代方式。根左右,遍历把根push进stack,然后push 右子树,左子树。由于根在(根左右)前面,每次子遍历根都在前面,压进去就出来了,可忽略根的属性。由于栈的特性。左右子树压进去的顺序相反。可参考图 。 public static void preOrderRecur(TreeNode head) { if (head == null) { return; } System.out....原创 2020-12-18 21:53:36 · 125 阅读 · 1 评论 -
BFS、DFS相关
广度优先搜索(BFS):主要用于树的层序遍历或图的最短路径寻找,主要使用队列queue来完成。深度优先搜索(DFS):一直往深处走,直到找到解或者走不下去为止,主要用于树的遍历(前序遍历,中序遍历,后序遍历)或者图的搜索问题或者回溯算法问题。参考:BFS和DFS总结请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵...原创 2020-12-15 22:12:47 · 129 阅读 · 0 评论 -
记录碰到的一个坑 引用和拷贝
这个问题是朋友问我的起初这个题目是:https://leetcode-cn.com/problems/zhong-jian-er-cha-shu-lcof/输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如,给出前序遍历 preorder =[3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 1..原创 2020-09-26 16:54:41 · 144 阅读 · 0 评论 -
LeetCode TOP k
215. 数组中的第K个最大元素难度中等705在未排序的数组中找到第k个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。方法一:快速排序快排每一趟会确定枢纽的位置,当partion 的位置为 nums.legth-k 的时候就是我们要查找的倒数第K大的元素public class TopK_215 { public int findKthLargest(int[] nums, int k){ if (nums.length =...原创 2020-09-26 17:28:59 · 173 阅读 · 0 评论 -
最长回文子串
给定一个字符串s,找到s中最长的回文子串。你可以假设s的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "b1、中心扩散class Solution { public String longestPalindrome(String s) { if (s == null || s.length() < 1){ ...原创 2020-09-22 10:00:03 · 104 阅读 · 0 评论 -
完全背包问题
518. 零钱兑换 II难度中等238给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。我们可以把这个问题转化为背包问题的描述形式:有一个背包,最大容量为 amount,有一系列物品 coins,每个物品的重量为 coins[i],每个物品的数量无限。请问有多少种方法,能够把背包恰好装满若只使用 coins 中的前 i 个硬币的面值,若想凑出金额 j,有 dp[i][j] 种凑法。dp[0][..] = 0, dp...原创 2020-09-19 10:16:33 · 103 阅读 · 0 评论 -
01背包问题
题目 :N件物品放入容量大小为W的背包里,N件物品的重量分别为w1,w2...wn, 各自的价值分别为v1,v2...vn。每件物品有且仅有一件,要么放入背包,要么不放入。求在背包容量范围内,使放入的物品价值总和最大的解法。动态规划的应用场景 适用动态规划的问题必须满足最优化原理、无后效性和重叠性。 a.最优化原理(最优子结构性质)最优化原理可这样阐述:一个最优化策略具有这样的性质,不论过去状态和决策如何,对前面的决策所形成的状态而言,余下的诸决策必须构成最优策略。简而言之,一个最...原创 2020-09-01 01:05:12 · 441 阅读 · 0 评论 -
剑指 Offer 45. 把数组排成最小的数
输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。示例 1:输入: [10,2]输出: "102"示例2:public class minNumber { public String minNumber(int[] nums) { String[] str =new String[nums.length]; for(int i=0;i<nums.length;i++){ ...原创 2020-08-11 02:00:07 · 109 阅读 · 1 评论 -
Leetcode 全排列问题 递归解法(回溯)
https://leetcode-cn.com/problems/permutations/给定一个 没有重复 数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]class Solution: def permute(self,nums) : if len(nums)==1 : ret...原创 2020-08-10 20:30:04 · 165 阅读 · 0 评论