leetcode
cjz-lxg
小白
展开
-
257. 二叉树的所有路径
这里要注意下,之所以不在else里加答案,主要是因为,会重复if里的操作,还有为什么只要在if里加答案,是因为,每次if迭代推进栈的实际上是当前点的下一个点路径,这导致了,如果不在if里添加答案,当当前点被废弃时,它的路径path也会被废弃,这导致了尽管else可以遍历到每一个节点,但它对应的路径却已经在if中被消掉了。//节点和路径同时出栈。//若找到叶子节点。//节点和路径同时入栈。257.二叉树的所有路径。...原创 2022-07-25 11:54:33 · 172 阅读 · 1 评论 -
222. 完全二叉树的节点个数
while处是logn级别实际上可以用二进制的移位进行理解,每一层树都是其实都是类似于二进制码0111,0011,0001,分别代表三层树,两层树,一层树,而从0001到0011,因为0011可以看作0100-1,当舍去1,就变成了0100,也就是0001先左移了2位,而这个移位实际上就是log(0100)等于2约等于log(0011),而0011等于第二层包括第一层全部的节点数量。这两种不算完全二叉树。...原创 2022-07-23 12:15:23 · 194 阅读 · 0 评论 -
904. Fruit Into Baskets
904. Fruit Into Baskets 题目如上,代码如下 第一种 class Solution { public: int totalFruit(vector<int>& fruits) { int ans = 0 ,i = 0; map<int, int> count; for (int j = 0; j < fruits.size(); ++j) { cou原创 2022-05-01 15:28:50 · 955 阅读 · 0 评论 -
844. Backspace String Compare(双指针法)
844. Backspace String Compare 代码如下 class Solution { public: bool backspaceCompare(string s, string t) { int first=s.length()-1,second=t.length()-1; int space_s=0,space_t=0; while(first>=0 || second>=0){ whil原创 2022-04-18 12:13:13 · 197 阅读 · 0 评论 -
283. Move Zeroes
283. Move Zeroes 题目如上,下面是代码 class Solution { public: void moveZeroes(vector<int>& nums) { int first=0,second=0,size = nums.size(); for(int first = 0 ;first<size;first++){ if(nums[first]!=0){ n原创 2022-04-18 10:28:55 · 73 阅读 · 0 评论 -
26. Remove Duplicates from Sorted Array
26. Remove Duplicates from Sorted Array 题目如上 ,然后我这里有两种办法,第一种,利用一个标记数组记录已经有的数字,不过因为题目的数字取值范围有负数,所以要将题目中的数组成员全部加1000,保证没有负数,不过赋值的时候不需要管,代码如下 class Solution { public: int removeDuplicates(vector<int>& nums) { int first=0,second=0;原创 2022-04-17 10:04:55 · 135 阅读 · 0 评论 -
367. Valid Perfect Square
367. Valid Perfect Squarehttps://leetcode-cn.com/problems/valid-perfect-square/ 题目在上面,我已经懒得转中文了,所以就这样吧,给代码如下 class Solution { public: bool isPerfectSquare(int num) { int r = num ; int l = 0; while(r>=l){原创 2022-04-16 10:00:50 · 139 阅读 · 0 评论 -
69. x 的平方根
69. x 的平方根 题目如上,我只会二分,牛顿迭代法没学过,所以只给二分的解法,但是二分法解这个的思路又很简单,所以我不做补充 class Solution { public: int mySqrt(int x) { int r = x ; int l = 0; while(r>=l){ int mid = r + (l-r)/2; if(mid*mid>x){ .原创 2022-04-16 09:49:43 · 118 阅读 · 0 评论 -
34. Find First and Last Position of Element in Sorted Array
34. Find First and Last Position of Element in Sorted Array 题目链接如上 先给代码 class Solution { public: vector<int> searchRange(vector<int>& nums, int target) { int left = searchleft(nums,target); int right = searchright(nu原创 2022-04-15 17:14:51 · 196 阅读 · 0 评论