刷题
菜狗罢了
Noone0^
欲渡黄河冰塞川,将登太行雪满山。
展开
-
[二叉树]LeetCode257.二叉树的所有路径
LeetCode257.二叉树的所有路径 思路:深度优先算法遍历二叉树,需要注意每次要将结果保存在一个string字符串内,最后将字符串尾插进vector容器。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), righ原创 2020-09-04 09:42:37 · 81 阅读 · 0 评论 -
[二叉树]LeetCode105&106.从中序与前/后序构建二叉树
105. 从前序与中序遍历序列构造二叉树 思路:根据root节点,将中序vector划分成vin_left,vin_right两部分中序子序列,根据中序子序列长度,将前序vector划分成pre_left, pre_right对应的前序子序列。root->left递归生成,root->right递归。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *le原创 2020-09-03 17:22:42 · 104 阅读 · 0 评论 -
[字符串替换]NewCode.替换空格
NewCode.替换空格 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 思路一: 替换问题,替换后字符串的长度也变长了,就要涉及到字符串中字符移动的问题。可以先遍历字符串统计空格的个数,再计算出新的字符串的长度,再向新的字符串中插入"%20"。利用双指针,各自指向新老空间的结尾,然后进行old->new的移动。如果是空格,就连续放入“%20”,其他平移即可。 class Solution原创 2020-07-28 16:55:43 · 119 阅读 · 0 评论 -
[数组]NewCode.数组中出现次数超过一半的数字
NewCode.数组中出现次数超过一半的数字 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 思路一:定义map,使用<数字,次数>的映射关系,最后统计每个字符出现的次数。 class Solution { public: int MoreThanHalfNum_Solution(vector<int> numbe原创 2020-07-28 16:08:26 · 109 阅读 · 0 评论 -
[二分查找]NewCode.旋转数组的最小数字
NewCode旋转数组的最小数字 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有 元素都大于0,若数组大小为0,请返回0。 方法一: 遍历一次即可,但是我们可以根据题面使用稍微高效且更简单一点的做法。按照要求,要么是一个非递减排序的数组(最小值在最开始),要么是一个旋转(最小值在中间某个地方)。而且旋转之后有个特征,就是在原创 2020-07-22 23:02:40 · 104 阅读 · 0 评论 -
[数组搜索]NewCode二维数组中的查找
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 思路: 如数组样式如下: 1 2 3 4 2 3 4 5 3 4 5 6 正常查找的过程,本质就是排除的过程,如果遍历整个数组,本质是一次排除一个,效率过低。根据题面要求,我们可以采取从右上角(或左下角)进行比较,这样可以做到一次排除一行或者一列 class Solution { public: bool F原创 2020-07-22 21:16:13 · 88 阅读 · 0 评论 -
[二叉树]LeetCode230.查找二叉搜索树中第K小的元素
给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。 输入: root = [5,3,6,2,4,null,null,1], k = 3 输出: 3 **思路:**二叉搜索树,其特点是对于每个节点而言,其值比左孩子大,比右孩子小。即只需要对二叉搜索树进行中序遍历,即可得到从小到大的二叉树排列。 class Solution { public: int kthSmallest(TreeNode* root, int k) { int num=0;原创 2020-05-08 18:50:39 · 188 阅读 · 0 评论 -
[遍历]LeetCode557. 反转字符串中的单词 III
557. 反转字符串中的单词 III 思路1: 遍历字符串找到要反转的条件:空格或者字符串末尾,再用swap()函数实现单词反转。 时间复杂度O(n2) 空间复杂度O(1) class Solution { public: string reverseWords(string s) { if(s.size()==0) return s; int start=0;//字母首 int end=0;//字母尾 for(int原创 2020-06-06 15:32:51 · 105 阅读 · 0 评论