3 qq_38303368

尚未进行身份认证

暂无相关简介

等级
TA的排名 14w+

leetcode练习题 search-for-a-range

解题思路二分查找,找到目标后,start向左找左边界,end向右找右边界,若数组中不存在目标元素则返回两个-1.算法复杂度可能不满足O(logn)代码class Solution {public: vector<int> searchRange(int A[], int n, int target) { int low = 0,high = n - 1;...

2020-03-27 15:21:47

leetcode练习题 search-insert-position

解题思路若等于target则返回下标,若数组中有大于target的则返回第一个大于target的下标,否则数组中没有大于等于target的,target要插到数组的尾部,返回数组当前的长度即为要插入的下标。代码class Solution {public: int searchInsert(int A[], int n, int target) { int res ...

2020-03-26 17:42:05

leetcode练习题 multiply-strings

解题思路类似于大整数乘法,先开辟一个整型数组,之后num1逐位与num2的每一位相乘,将结果存储在两个坐标相加的位置,之后将每一位修改为只存储一位数,进位往下一位叠加,最后将头部的0去掉,将结果转化为字符串,搞定!代码#include<algorithm>class Solution {public: string multiply(string num1, stri...

2020-03-26 17:22:00

leetcode练习题 combination-sum-ii

解题思路和combination-sum类似,只不过元素不能重复使用,故用一个visit数组标记已经选用了的元素,避免重复选用。代码class Solution {public: bool visit[10001]; void dfs(vector<int>num,int target,vector<vector<int>> &r...

2020-03-26 15:13:03

leetcode练习题combination-sum

解题思路本质是dfs,首先将candidates排序,candidates中的元素可以重复选用,若target为0,则用一个tmp数组复制当前cur数组并排序,在res中查看是否已有该结果,若没有则插入。若target不为零则在candidates中选满足小于等于target的元素并深度搜索,每次搜索结束要回溯,将该元素从cur中pop_back。代码class Solution {pub...

2020-03-26 15:00:43

leetcode练习题 first-missing-positive

解题思路看了讨论区之后才有的思路,遍历数组,将元素i放到数组i - 1坐标下,之后遍历数组找到第一个不匹配的坐标,返回该坐标加一即为不在给定数组里的最小整数。代码class Solution {public: int firstMissingPositive(int A[], int n) { int i = 0; while(i < n){...

2020-03-26 12:24:28

leetcode练习题 anagrams

解题思路遍历字符串数组,将字符串的顺序调整为26个字母的顺序,并用一个map记录出现的次数,之后再遍历一次数组,若调整顺序后的字母出现的次数大于等于2的则将该字符串放入结果数组中,最后返回结果。代码class Solution {public: vector<string> anagrams(vector<string> &strs) { ...

2020-03-26 11:38:45

leetcode练习题 spiral-matrix

解题思路设置left、right、up、down,之后按顺序将二维数组的元素放入数组中,若四个变量变化过程中超出范围则break。代码class Solution {public: vector<int> spiralOrder(vector<vector<int> > &matrix) { vector<int&g...

2020-03-26 11:20:55

leetcode练习题 n-queens-ii

解题思路与n-queens差不多,只不过row == n时不需要存储结果只需要将解法计数加一。代码class Solution {public: int choose[10001]; void dfs(int &res,int row,int n){ if(row == n){ res++; } ...

2020-03-26 10:05:13

leetcode练习题 n-queens

解题思路深度搜索,用一个数组choose来标记每一行的摆放皇后的列,若row == n则存储结果,否则,在第row+1行放置皇后时,改行有n列,逐列放置皇后进行测试,检查与前面的行放置的皇后是否冲突,不冲突则进行下一行的摆放。处在同一列则冲突,斜线也冲突。代码#define MAXN 10001class Solution {public: void dfs(vector<...

2020-03-26 09:59:23

leetcode练习题 recover-binary-search-tree

解题思路用pre保存先序遍历的上一个结点,用a和b保存要交换的两个结点,若pre不为空且pre的值大于等于当前根节点的值,修改a、b的值并将pre修改为当前根结点,之后先序遍历根结点的右子树,最后若a、b不为空,则交换a和b的值。代码class Solution {public: void preorder(TreeNode *root,TreeNode *&pre,Tre...

2020-03-25 22:05:09

leetcode练习题 validate-binary-search-tree

解题思路中序遍历二叉树,检查结果是否为递增序列,若是则为二叉搜索树。代码class Solution {public: void inorder(TreeNode *root,vector<int> &res){ if(root != NULL){ inorder(root->left,res); ...

2020-03-25 20:50:16

leetcode练习题 binary-tree-inorder-traversal

解题思路简单中序遍历代码class Solution {public: void inorder(TreeNode *root,vector<int> &res){ if(root != NULL){ inorder(root->left,res); res.push_back(root-&g...

2020-03-25 20:12:42

leetcode练习题 same-tree

解题思路若pq都为空结点则返回true,若只有一个为空则返回false。否则检查两者的值是否相同、左右子树是否相同,整个过程通过递归实现。代码class Solution {public: bool check(TreeNode *p,TreeNode *q){ if(p == NULL && q == NULL) retur...

2020-03-25 17:48:54

leetcode练习题symmetric-tree

解题思路check函数中,若x、y皆为空,则return true,若x、y其中之一为空,则return false,否则检测xy的值是否相等以及x的左和y的右、x的右和y的左是否对称。整个过程用递归实现。代码class Solution {public: bool check(TreeNode *x,TreeNode *y){ if(x == NULL &...

2020-03-25 17:38:34

leetcode练习题binary-tree-zigzag-level-order-traversal

解题思路题目要求为之字形层次遍历,故与层次遍历不同的是,可以设置一个栈,并设置一个标记,当标记对二求余为0时,表示当前层的下一层的遍历顺序是从右往左,则检测当前层的孩子结点时,则先左孩子入栈再右孩子入栈,最后当前层遍历完毕时,将栈中的元素从栈顶到栈底依次插入队列中。当标记对二求余为1时,表示下一层的遍历顺序是从左往右,则检测当前层的孩子结点时,先右孩子入栈,再左孩子入栈,当前层遍历完毕时,此时从...

2020-03-25 17:26:06

leetcode练习题 binary-tree-level-order-traversal

解题思路用一个队列进行二叉树的层次遍历,先将根放入队列中,之后队列非空时,将当前层的pop出来,若有左右子树则入队。直到队列为空,遍历结束。代码class Solution {public: vector<vector<int> > levelOrder(TreeNode *root) { vector<vector<int&gt...

2020-03-25 16:25:19

leetcode练习题 maximum-depth-of-binary-tree

解题思路若结点为空,则返回0,否则计算该结点左右子树的最大深度,最后返回左右子树最大深度的较大值 + 1.即为最终结果。代码class Solution {public: int maxDepth(TreeNode *root) { if(root == NULL) return 0; int l = maxDepth(roo...

2020-03-25 15:55:53

leetcode练习题 construct-binary-tree-from-preorder-and-inorder-traversal

解题思路前序遍历第一个结点为根,在中序遍历中找到该结点,从而将中序遍历分为左右子树,准确定位左右子树在前序遍历中的起点和终点,之后递归建立左右子树,设置递归出口,最后返回根。代码class Solution {public: TreeNode *buildTree(vector<int> &preorder,vector<int> &inor...

2020-03-25 15:52:03

leetcode练习题 search-in-rotated-sorted-array-ii

解题思路直接暴力搜索吧代码class Solution {public: bool search(int A[], int n, int target) { bool flag = false; for(int i = 0;i < n;i++){ if(A[i] == target){ f...

2020-03-25 14:52:45

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。