剑指 Offer II 055. 二叉搜索树迭代器 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/kTOapQ 著作权归领扣网络所有.商业转载请联系官方授权,非商业转载请注明出处. 题目描述 实现一个二叉搜索树迭代器类BSTIterator ,表示一个按中序遍历二叉搜索树(BST)的迭代器: BSTIterator(TreeNode root) 初始化 BSTIterator 类的一个对象.BST 的根节点 root 会作为构造…
剑指 Offer II 001. 整数除法 解题思路 在计算的时候将负数转化为正数,对于32位整数而言,最小的正数是-2^31, 将其转化为正数是2^31,导致溢出.因此将正数转化为负数不会导致溢出. 设置一个变量,用来记录正数个数,以便在最后的结果调整正负号. 特殊情况,可能溢出的情况讨论,由于是整数除法,除数不为0,商的值一定小于等于被除数的绝对值,因此,int型溢出只有一种情况,(-2^31)/(-1) = 2^31. 最容易想到的是通过减法代替除法,但是会超时 class Solutio…
class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = None # 这道题使用中序遍历加上剪枝的方法来做的.class Solution: def isBalanced(self, root: TreeNode) -> bool: if self.dfs(root) == -1:return False else:return True def dfs(self,root): # 如果节…
题目 解题思路 一个很暴力的想法,在满足单调递增的前提下,使每一位分别取 1 或 0,去看看哪个结果小. 递归函数定义int dp(StringBuilder sb, int ind, int pre) sb是字符串,ind 是字符串当前位,pre 是字符串前一位(0或1) dp函数表示:从字符串当前位ind开始到字符串结尾,这样一个子字符串,变为单调递增所需要翻转的最小次数. 因此题目所求就是 dp(sb, 0, 0).第0位的前一位为0. 具体递归入口有四种情况,根据前一位是0或1 和 当前…
初始化 数组初始化在class外的话 要memset 在主函数里面memset 在class内不用 062. 实现前缀树 class Trie { public: /** Initialize your data structure here. */ int son[100010][26],cnt[100010],idx=0; Trie() { memset(son,0,sizeof son); } /** Inserts a word into the trie. */ void insert…
088. 爬楼梯的最少成本 class Solution { public: int minCostClimbingStairs(vector<int>& cost) { int n=cost.size(); vector<int>f(n+1); f[0]=cost[0],f[1]=cost[1]; //走到第i级台阶 最小代价 //状态转移 从前一个或 前两个走上来 cost.push_back(0); for(int i=2;i<=n;i++) { f[i]=co…
068. 查找插入位置 class Solution { public: int searchInsert(vector<int>& nums, int target) { int l=0,r=nums.size(); nums.push_back(1000000);//一定有数比target大 它在的位置会是最后一个插入的位置 可以直接return l while(l<r) { int mid=l+r>>1; if(nums[mid]>=target)r=mi…
059. 数据流的第 K 大数值 class KthLargest { public: priority_queue<int,vector<int>,greater<int>>heap;//小根堆 维护第1大到第k大的数 top就是第k大的数 int k;//太妙了 /* 第n大 n-1 n-2 ... k k-1 k-2 ... 第1大 如果加的数小于a[k] 它将被弹走 大 k是第k+1大的 把k弹出去 */ KthLargest(int _k, vector<…
086. 分割回文子字符串 用substr枚举 因为是连续的 不是放与不放的问题 class Solution { public: vector<vector<string>>ans; vector<string>path; bool check() { for(string x:path) { for(int i=0;i<x.size();i++) { if(x[i]!=x[x.size()-1-i])return false; } } return true;…
我为什么要把代码粘在这里 断更很久了,基于一个错误的观念:我想看题,我到leetcode官网看不就行了吗? 但是若干年后我可能还会到我的博客园看看呀,我有可能上刷题网站吗?而且心得不好写到注释上. 记博客是长久的事,不能贪一时的方便. 这两周我并不是没有记博客,大致看完了图解系统 看了图解网络的tcp 看了10篇mysql45讲 截原图太多了 不好意思发 还有做项目 也是就自己看看. ---2022.3.23 047. 二叉树剪枝 class Solution { public TreeNode…