自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(66)
  • 收藏
  • 关注

转载 非递归遍历树

前言在前两篇文章二叉树和二叉搜索树中已经涉及到了二叉树的三种遍历。递归写法,只要理解思想,几行代码。可是非递归写法却很不容易。这里特地总结下,透彻解析它们的非递归写法。其中,中序遍历的非递归写法最简单,后序遍历最难。我们的讨论基础是这样的://Binary Tree Nodetypedef struct node{ int data; struct node* lchild; //左孩子 struct node* rchild; //右孩子}BTNode;首先,有一点是明确的:非递归

2021-09-12 14:48:58 651

原创 字节笔试真题之万万没想到之聪明的编辑

题目描述 我叫王大锤,是一家出版社的编辑。我负责校对投稿来的英文稿件,这份工作非常烦人,因为每天都要去修正无数的拼写错误。但是,优秀的人总能在平凡的工作中发现真理。我发现一个发现拼写错误的捷径: 1. 三个同样的字母连在一起,一定是拼写错误,去掉一个的就好啦:比如 helllo -> hello 2. 两对一样的字母(AABB型)连在一起,一定是拼写错误,去掉第二对的一个字母就好啦:比如 helloo -> hello 3. 上面的规则优先“从左到右”匹配,即如果是AABBCC

2021-05-04 10:49:16 330

原创 leetcode-Ugly系列

题目链接https://leetcode-cn.com/problems/ugly-number/https://leetcode-cn.com/problems/ugly-number-ii/https://leetcode-cn.com/problems/ugly-number-iii/https://leetcode-cn.com/problems/super-ugly-number/代码丑数:class Solution {public: bool isUgly(int n)

2021-04-13 14:35:06 145

原创 模拟笔试-优美指数

题目描述输入n个边长,找出其中可以组成三角形的“优美指数”的最大值。优美指数是指|a-b|+|a-c|+|b-c|。解题思路找出最大边,最小便作为第二条边,找出能组成三角形的第三条边,即为最大值边。代码#include <vector>#include <iostream>#include <algorithm>using namespace std;bool IsTriangle(int a, int b, int c){ if (a + b

2021-03-28 22:43:13 143

原创 dp-模拟笔试-m*n

题目描述有一个n*m的格子,从(0,0)走到(n-1, m-1)有多少种走法?如果在格子中有q个障碍物,有多少种走法?解题思路dp[n][m];dp[i][j]表示从(0,0)第i行第j个格子有多少种走法。障碍物的点置“-1”;初始化dp[0][i]为1,障碍物后面均为-1,dp[i][0]同理。return dp[n-1][m-1]。代码#include <iostream>#include <vector>using namespace std;

2021-03-28 22:37:24 120

原创 leetcode-剑指 Offer 40. 最小的k个数

题目链接https://leetcode-cn.com/problems/zui-xiao-de-kge-shu-lcof/解题思路对数组进行排序;取前k个数放入结果数组;返回结果数组。代码class Solution {public: vector<int> getLeastNumbers(vector<int>& arr, int k) { sort(arr.begin(), arr.end()); vector

2021-03-27 23:19:18 92

原创 leetcode-908. 最小差值 I

题目链接https://leetcode-cn.com/problems/smallest-range-i/解题思路找出A最大值和最小值;求A的最大值与最小值之间的差;差减去2K;如果过3的结果小于等于0,返回0;否则返回3的结果。代码class Solution {public: int smallestRangeI(vector<int>& A, int K) { if(A.size() <= 1) ret

2021-03-27 23:14:02 64

原创 leetcode-202. 快乐数

题目链接https://leetcode-cn.com/problems/happy-number/解题思路设置两个指针;指针一每次都求下一个平方和;指针二每次都求辖下一个平方和;如果是快乐数,两个指针会在1相遇;如果不是快乐数,两个指针会在循环的某一处相遇。代码class Solution {public: int bitSquareSum(int n) { int sum = 0; while(n > 0) {

2021-03-26 22:56:32 82

原创 leetcode-1706. 球会落何处

题目链接https://leetcode-cn.com/problems/where-will-the-ball-fall/解题思路动态规划后一行等于前一行的位置+grid[i][j]需要考虑啥时候会卡住卡住的时候置-1去最后一行为结果。代码class Solution {public: vector<int> findBall(vector<vector<int>>& grid) { int row = grid.

2021-03-26 22:47:58 181

原创 leetcode-905. 按奇偶排序数组

题目链接https://leetcode-cn.com/problems/sort-array-by-parity/解题思路双指针一个指针从0开始,一个从A.size()开始进行遍历;每次遇到两个奇偶就交换代码class Solution {public: vector<int> sortArrayByParity(vector<int>& A) { int p1=0,p2=0; int i = 0 ;

2021-03-25 22:10:17 92

原创 leetcode-1009. 十进制整数的反码

题目链接https://leetcode-cn.com/problems/complement-of-base-10-integer/解题思路模拟十进制转二进制;模拟原码转反码;模拟二进制转十进制。代码class Solution {public: int bitwiseComplement(int N) { if (N == 0) { return 1; } string s = dec2bin(N

2021-03-25 21:56:54 72

原创 leetcode-961. 重复 N 次的元素

题目链接https://leetcode-cn.com/problems/n-repeated-element-in-size-2n-array/解题思路两两分组,有相同的就说明是。如果都不相同,就找前四个里面一样的。代码class Solution {public: int repeatedNTimes(vector<int>& A) { int n = A.size()/2; for(int i =0;i<n;i++)

2021-03-24 21:53:21 71

原创 leetcode-1332. 删除回文子序列

题目链接https://leetcode-cn.com/problems/remove-palindromic-subsequences/解题思路只有0,1,2三种结果的可能字符串为空时返回0字符串为回文字符串时返回1否则返回2代码class Solution {public: int removePalindromeSub(string s) { if(s.size() == 0) return 0; int i = 0

2021-03-24 20:21:32 75

原创 leetcode-309. 最佳买卖股票时机含冷冻期

题目链接https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-with-cooldown/解题思路见https://blog.csdn.net/weixin_38554391/article/details/114855787?spm=1001.2014.3001.5501,冷冻期需要加一种状态。代码class Solution {public: int maxProfit(vector<int>&a

2021-03-23 23:04:23 58

原创 leetcode-剑指 Offer 14- II. 剪绳子 II

题目链接https://leetcode-cn.com/problems/jian-sheng-zi-ii-lcof/解题思路以下方法未经过证明;绳子长度每次-3并把3乘以结果;乘以最后剩下的2,3,4。代码class Solution { public: int cuttingRope(int n) { if(n < 4){ return n - 1; }else if(n == 4){

2021-03-23 22:37:24 45

原创 leetcode-剑指 Offer 63. 股票的最大利润

用时15分钟。题目链接https://leetcode-cn.com/problems/gu-piao-de-zui-da-li-run-lcof/解题思路滑动窗口(?)设置min为最低价格,设置maxprofit为当前价格与最低价格之间的差价;求最大差价代码class Solution {public: int maxProfit(vector<int>& prices) { int min = INT_MAX; int m

2021-03-22 22:29:21 59

原创 leetcode-343. 整数拆分

题目链接https://leetcode-cn.com/problems/integer-break/解题思路动态规划dp[i]表示i被分成两部分时候取得的最大值;dp[i] = max(j*(i-j), j*dp[i-j], dp[i])return dp[n]代码class Solution {public: int integerBreak(int n) { vector<int> dp(n+1, 0); dp[0] = dp[

2021-03-22 22:03:36 59

原创 746. 使用最小花费爬楼梯

题目链接https://leetcode-cn.com/problems/min-cost-climbing-stairs/解题思路动态规划dp[i]表示到达当前阶梯的最小花费dp[i] = min(dp[i-1], dp[i-2]) + cost[i-1];return min(dp[cost.size()-1], dp[cost.size()])代码class Solution {public: int minCostClimbingStairs(vector<int

2021-03-21 21:46:41 53

转载 leetcode-剑指 Offer 42. 连续子数组的最大和

用时2分钟题目链接https://leetcode-cn.com/problems/lian-xu-zi-shu-zu-de-zui-da-he-lcof/解题思路及代码和leetcode-面试题 16.17. 连续数列一样,见链接:https://blog.csdn.net/weixin_38554391/article/details/115035824?spm=1001.2014.3001.5501...

2021-03-21 21:35:06 56

原创 leetcode-面试题 08.01. 三步问题

本题用时7分钟,主要的时间用来解决取模的问题。题目链接https://leetcode-cn.com/problems/three-steps-problem-lcci/解题思路动态规划;dp[i]代表走到i层台阶的方法的数量;dp[i] = dp[i-1] + dp[i-2] + dp[i-3];代码class Solution {public: int waysToStep(int n) { if(n <= 2) return

2021-03-20 22:14:13 89

原创 leetcode-面试题 16.17. 连续数列

题目链接https://leetcode-cn.com/problems/contiguous-sequence-lcci/解题思路动态规划dp[i]表示以i结尾的最大连续子序列;dp[i] = max(dp[i-1]+nums[i], nums[i]);取max(dp[i]);代码class Solution {public: int maxSubArray(vector<int>& nums) { if(nums.size() == 0)

2021-03-20 22:01:30 92

原创 leetcode-771. 宝石与石头

题目链接https://leetcode-cn.com/problems/jewels-and-stones/解题思路对宝石和石头进行排序;遍历石头,对比宝石和石头的“大小”(在字母表中的位置),如果石头小,则继续,如果相等,则宝石数量加一,继续,如果石头大,则宝石位置加一。代码class Solution {public: int numJewelsInStones(string jewels, string stones) { sort(jewels.begin

2021-03-19 22:41:00 72

原创 leetcode-72.编辑距离

题目链接https://leetcode-cn.com/problems/edit-distance/解题思路动态规划;dp[i][j]表示word1[0…i]转换成word2[0…j]所需的最少步数;状态转移方程,当word[i] == word[j]时,dp[i][j] == dp[i-1][j-1],当word[i] != word[j]时,如果需要插入一个,则dp[i][j] == dp[i-1][j] + 1,如果需要删除则dp[i][j] == dp[i][j-1] + 1,如果需要

2021-03-19 22:19:47 50

原创 leetcode-392. 判断子序列

本题用时7分钟。题目链接https://leetcode-cn.com/problems/is-subsequence/解题思路双指针;一个指向s,一个指向t;遍历t,遇到与当前s字符相同的,则s的指针+1;当s的指针指向s后一位,返回true;当t遍历结束,返回false。代码class Solution {public: bool isSubsequence(string s, string t) { if(s.size() == 0)

2021-03-18 23:43:56 84

原创 leetcode-1504. 统计全 1 子矩形

本题用时58分钟。题目链接https://leetcode-cn.com/problems/count-submatrices-with-all-ones/题目描述给你一个只包含 0 和 1 的 rows * columns 矩阵 mat ,请你返回有多少个 子矩形 的元素全部都是 1 。示例 1输入:mat = [[1,0,1],[1,1,0],[1,1,0]]输出:13解释:有 6 个 1x1 的矩形。有 2 个 1x2 的矩形。有 3 个 2x1 的矩形。有 1 个 2x2

2021-03-18 22:21:10 146

原创 leetcode-1025. 除数博弈

题目链接https://leetcode-cn.com/problems/divisor-game/题目描述爱丽丝和鲍勃一起玩游戏,他们轮流行动。爱丽丝先手开局。最初,黑板上有一个数字 N 。在每个玩家的回合,玩家需要执行以下操作:选出任一 x,满足 0 < x < N 且 N % x == 0 。用 N - x 替换黑板上的数字 N 。如果玩家无法执行这些操作,就会输掉游戏。只有在爱丽丝在游戏中取得胜利时才返回 True,否则返回 False。假设两个玩家都以最佳状态参与游戏

2021-03-17 22:33:52 132

原创 leetcode-面试题 17.16. 按摩师

题目链接https://leetcode-cn.com/problems/the-masseuse-lcci/题目描述一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。注意:本题相对原题稍作改动示例 1输入: [1,2,3,1]输出: 4解释: 选择 1 号预约和 3 号预约,总时长 = 1 + 3 = 4。示例 2输入: [2

2021-03-17 22:00:32 132

原创 leetcode-650. 只有两个键的键盘

题目链接https://leetcode-cn.com/problems/2-keys-keyboard/题目描述最初在一个记事本上只有一个字符 ‘A’。你每次可以对这个记事本进行两种操作:Copy All (复制全部) : 你可以复制这个记事本中的所有字符(部分的复制是不允许的)。Paste (粘贴) : 你可以粘贴你上一次复制的字符。给定一个数字 n 。你需要使用最少的操作次数,在记事本中打印出恰好 n 个 ‘A’。输出能够打印出 n 个 ‘A’ 的最少操作次数。示例输入: 3输出:

2021-03-16 23:04:30 71

原创 leetcode-357. 计算各个位数不同的数字个数

题目链接https://leetcode-cn.com/problems/count-numbers-with-unique-digits/题目描述给定一个非负整数 n,计算各位数字都不同的数字 x 的个数,其中 0 ≤ x < 10n 。示例输入: 2输出: 91解释: 答案应为除去 11,22,33,44,55,66,77,88,99 外,在 [0,100) 区间内的所有数字。解题思路动态规划;dp[i]表示当前i长度中重复的数字的个数;状态转移方程,假设前面没有重复数组,

2021-03-16 22:41:09 101

原创 leetcode-714. 买卖股票的最佳时机含手续费

题目链接https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/题目描述给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 ;非负整数 fee 代表了交易股票的手续费用。你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。返回获得利润的最大值。注意:这里的一笔交易指买入持有并卖出股票的整个过

2021-03-15 22:41:13 73

原创 leetcode-1641. 统计字典序元音字符串的数目

题目链接https://leetcode-cn.com/problems/count-sorted-vowel-strings/题目描述给你一个整数 n,请返回长度为 n 、仅由元音 (a, e, i, o, u) 组成且按 字典序排列 的字符串数量。字符串 s 按 字典序排列 需要满足:对于所有有效的 i,s[i] 在字母表中的位置总是与 s[i+1] 相同或在 s[i+1] 之前。示例 1输入:n = 1输出:5解释:仅由元音组成的 5 个字典序字符串为 [“a”,“e”,“i”,“o”

2021-03-15 21:55:37 132

原创 动态规划之0/1背包问题-leetcode-416-partition-equal-subset-sum

题目链接https://leetcode-cn.com/problems/partition-equal-subset-sum/题目要求给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。注意:每个数组中的元素不会超过 100数组的大小不会超过 200示例 1输入: [1, 5, 11, 5]输出: true解释: 数组可以分割成 [1, 5, 5] 和 [11].示例 2输入: [1, 2, 3, 5]输出: false解释: 数组不能

2021-03-01 17:37:55 116

原创 动态规划-0/1背包

参考博客:令人头疼的背包九讲(1)0/1背包问题动态规划之0/1背包问题描述有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。输入格式第一行两个整数,N,M空格隔开,分别表示物品数量和背包容积。接下来有N行,每行两个整数vi,wi,空格隔开,分别表示第i件物品的体积和价格输出格式输出一个整数,表示最大价值。数据范围0<N,M<10000<vi,wi<1000

2021-02-24 10:20:11 56

原创 leetcode_sqrtx

题目链接https://leetcode-cn.com/problems/sqrtx/题目内容实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1输入: 4输出: 2示例 2输入: 8输出: 2说明: 8 的平方根是 2.82842…,由于返回类型是整数,小数部分将被舍去。解题思路采用二分查找,找到mid的平方大于x,返回查找结果。代码class Solution {

2021-01-06 00:18:55 77

原创 leetcode_merge-intervals

题目链接https://leetcode-cn.com/problems/merge-intervals/题目内容给出一个区间的集合,请合并所有重叠的区间。示例 1输入: intervals = [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2输入: intervals = [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4

2021-01-03 22:31:30 144 1

原创 leetcode_can-place-flowers

题目链接https://leetcode-cn.com/problems/can-place-flowers/题目内容假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花),和一个数 n 。能否在不打破种植规则的情况下种入 n 朵花?能则返回True,不能则返回False。示例 1输入: flowerbed = [1,0,0,0,1], n = 1输

2021-01-02 00:08:32 69

原创 leetcode_binary-tree-level-order-traversal-ii

题目链接https://leetcode-cn.com/problems/binary-tree-level-order-traversal-ii/题目内容给定一个二叉树,返回其节点值自底向上的层序遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回其自底向上的层序遍历为:[[15,7],[9,20],[3]]解题思路利用队列,每次出队就遍历左右节点;

2020-12-30 23:47:17 80

原创 csdn问答总结与计划

回答问题总结我对自己昨天(20201029)在CSDN问答模块的编程语言中挑选问题回答的过程中遇到的问题进行了以下的总结:用户的提问质量普遍不高,用户不会描述问题背景,甚至不会好好描述问题,甚至仅贴出代码。对于这类用户,我们的机器人应该做的是与用户进行即时交互,引导用户提出正确的问题,引导用户描述问题背景。这样的即时交互的好处在于 ①帮助提问者进行思考;②帮助回答者看清楚问题背景。如果交互的不及时,可能提问者已经“下线”了。回答者也希望一次解答就能帮助别人解决问题,而不是来回的与提问者进行交互。由于

2020-12-30 20:06:09 129

原创 leetcode_construct-binary-tree-from-preorder-and-inorder-traversal

题目链接https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/题目内容根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树:3/ 9 20/ 15 7解题思路1.用hash表存

2020-12-29 23:30:38 80

原创 leetcode_symmetric-tree

题目链接https://leetcode-cn.com/problems/symmetric-tree/题目内容给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。1/ 2 2/ \ / 3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:1/ 2 2\ 3 3进阶:你可以运用递归和迭代两种方法解决这个问题吗?解题思路1.若是空树或者是只有一个节点的树则返回tru

2020-12-28 22:34:43 86

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除