- 博客(40)
- 收藏
- 关注
原创 无重复字符串的排列组
递归的方式解决,只需要每次判断当前节点是否已经被占用就好class Solution {public:void findlist(string s,vector<string>&cc,string tem,int begin,vector<bool>&flag){ if(tem.size()==s.size())cc.push_back(te...
2020-03-26 16:44:53 200
原创 94、二叉树中序遍历
二叉树的中序遍历,这道题要求不能用递归的方式采用迭代的方式利用栈的特性,先是将root节点及其左节点全部放到栈中,然后依次弹栈,每次弹出后再判定当前节点是否有右节点,当有右节点时,再将此右节点的所有左节点入栈,再弹栈,while循环直至栈空**Definition for a binary tree node.struct TreeNode {int val;Tre...
2020-03-23 20:29:46 128
原创 1008、先序构建搜索二叉树
应为给的容器中为先序遍历的值,所有将其遍历的同时进行二叉树的构建即可。二叉树的构建采用递归的方法,逆先序遍历/**Definition for a binary tree node.struct TreeNode {int val;TreeNode *left;TreeNode *right;TreeNode(int x) : val(x), left(...
2020-03-23 15:28:36 201
原创 654、最大二叉树
这道题没给根节点,还得自己重新构建,构建思想和二分法类似先找到begin到end之间的最大值,记录下这个值的同时记录下这个值的位置,new一个新节点,再将左右节点进行递归只需要指定好递归终止判断就好,也就是begin>end/**Definition for a binary tree node.struct TreeNode {int val;TreeNod...
2020-03-17 16:30:52 74
原创 04.03、特定深度节点链表
这题就是对树进行层次遍历的时候顺便构建一个链表,再把链表压入容器/**Definition for a binary tree node.struct TreeNode {int val;TreeNode *left;TreeNode *right;TreeNode(int x) : val(x), left(NULL), right(NULL) {}};...
2020-03-17 15:06:33 120
原创 230、二叉搜索树第K小元素
我想了两种方法,一种就是将二叉树进行前序遍历,并将值全部扔进一个容器里面,这样容器里面的值就是递增排序的数,输出第k-1个值 ,就ok,这个方法很容易理解。第二个就是用栈的性质,将树的左值先扔到栈里面,然后再弹栈,每次弹栈都将此节点的右值扔进栈里,这样就能进行递增遍历,加上k–,当k=0时正好输出就ok。struct TreeNode {int val;TreeNode *left;Tr...
2020-03-15 16:26:13 81
原创 21、调整数组顺序
使用一次快排最简单class Solution {public:vector exchange(vector& nums){int i=0,j=nums.size()-1;while(i<j){if(nums[i]%20&&nums[j]%21){int tem=nums[i];nums[i]=nums[j];nums[j]=tem;i++;...
2020-03-11 17:34:25 74
原创 136、只出现一次的数字
这道题最好的做法是异或,0^number=numbernumber^number=0class Solution {public:int singleNumber(vector& nums){int n=0;for(int i=0;i<nums.size();i++){n=n^nums[i];}return n;}};...
2020-03-11 16:24:29 62
原创 02.07、链表相交
这道题主要的问题在于两条链表长度不同,而且是按照地址来确定相交点的。我刚开始的想法是将两个链表的值分别扔进vector里,然后倒着遍历,当出现不同时,+1就是相交点。想一想定义一个vector<ListNode*>这样应该可以这道题有一个很巧的做法,就是定义头节点,让它们对面条链表都进行遍历,这样就很巧的消除了这两条链表的长度差。意思就是first先对A链表进行遍历 second...
2020-03-10 23:41:34 138
原创 897、递增顺序查找树
/**Definition for a binary tree node.struct TreeNode {int val;TreeNode *left;TreeNode *right;TreeNode(int x) : val(x), left(NULL), right(NULL) {}};/class Solution {public:...
2020-03-10 20:46:09 80
原创 68、二叉树的最近公共祖先
这道题求最近公共祖先,我的想法是先在二叉树中找到这两个节点,然后将这两个节点到根节点的所有节点分别存到两个容器中,因为是从当前节点到根节点的逆序存储,所以只需要再对两个容器进行对比,找到他们最近相同的一个点,这个点就一定是他们的最近公共祖先。在写代码时,如果存在布尔值,在进行判断时一定要记得这样写bool ret = false;if( !ret )这样进行判断不易错,我写成ret=fals...
2020-03-10 19:06:37 74
原创 02.01、移除重复节点
利用map的特性,将第一次遇到的值装入map中,同时更新链表若是键值的值大于0,则跳过当前节点,最后记得要在遍历完链表后将新链表的末尾置为NULL,即list->next=NULL链表的题目都值得注意的就是地址不要弄串了,每次都应该多申请一个地址来记录原本的头节点,最后直接返回pre->next/**Definition for singly-linked list.s...
2020-03-09 21:59:13 114
原创 965、单值二叉树
二叉树的题目有点形成惰性思维了,迭代几乎解决了所有。将二叉树根植记录下来,再对二叉树进行前序遍历(哪一种遍历都行),若是不同则返回就好/**Definition for a binary tree node.struct TreeNode {int val;TreeNode *left;TreeNode *right;TreeNode(int x) :...
2020-03-09 21:25:47 65
原创 206、反转链表
用迭代法,将个节点的值往前插如 1->2->3->4->5 new一个Null节点第一个节点1->NULL head=head->next第二个节点2->1->NULL就这样前插/**Definition for singly-linked list.struct ListNode {int val...
2020-03-09 17:48:29 70
原创 03、数组中的重复数字
这道题好像是分别需要考虑时间和空间直接排序,再检测邻位是否相同,思路要简单很多class Solution {public:int findRepeatNumber(vector& nums){sort(nums.begin(),nums.end());int i=nums.size()-1;int c=-1;while(i>=0){if(nums[i]==nu...
2020-03-09 16:12:22 73
原创 559、N叉树最大深度
对每一个分支进行DFS,计算每个分支的长度,每次都进行大小比较,最后输出最大的只是 int tem=maxDepth(root->children[i]);if(tem>max)max=tem;这一段,我最开始写if(max<maxDepth(root->children[i]))max=maxDepth(root->children[i]);显示超时。...
2020-03-08 21:17:43 92
原创 108、将有序数组转化为二叉树
这道题刚开始的时候我的if中是left>=right即返回null,后面发现,这样就会使得右区间为开,找了很久的错误。/**Definition for a binary tree node.struct TreeNode {int val;TreeNode *left;TreeNode *right;TreeNode(int x) : val(x...
2020-03-08 20:20:07 133
原创 32、从上到下打印二叉树
这就是层序遍历算法,只是需要将值扔进容器中利用队列的特点,将二叉树每层的值一词扔进队列中,在将子树扔进队列的同时,拿出当前节点的值,即可保证层序遍历/**Definition for a binary tree node.struct TreeNode {int val;TreeNode *left;TreeNode *right;TreeNode(i...
2020-03-06 17:23:59 67
原创 54搜索二叉树的第K大值
因为为搜索二叉树,对二叉树进行一次反中序遍历即可/**Definition for a binary tree node.struct TreeNode {int val;TreeNode *left;TreeNode *right;TreeNode(int x) : val(x), left(NULL), right(NULL) {}};*/...
2020-03-06 16:44:00 184
原创 589、N叉树前序遍历
/*// Definition for a Node.class Node {public:int val;vector<Node*> children;Node() {}Node(int _val) { val = _val;}Node(int _val, vector<Node*> _children) { val = _val;...
2020-03-05 20:38:33 105
原创 判断字符是否唯一
用map来测试了是最快的class Solution {public:bool isUnique(string astr){bool ret = true;map<char, int>cc;for (int i = 0; i < astr.size(); i++){cc[astr[i]]++;if (cc[astr[i]] > 1)ret = fals...
2020-03-04 21:58:41 96
原创 832、翻转图像
边翻转边换数字就好class Solution {public:vector<vector> flipAndInvertImage(vector<vector>& A){for(int k=0;k<A.size();k++){int i=0,j=A[k].size()-1;while(i<j){int n=A[k][i];A[k][...
2020-03-04 19:07:42 60
原创 226翻转二叉树
判断是否已经是NULL,不是则将左右互换,再递归/**Definition for a binary tree node.struct TreeNode {int val;TreeNode *left;TreeNode *right;TreeNode(int x) : val(x), left(NULL), right(NULL) {}};*/clas...
2020-03-04 18:05:21 93
原创 621 合并二叉树
将两个二叉树合并,都为NULL返回NULL,缺一个返回剩下的那个两个都有,就将值相加再返回合并那个/**Definition for a binary tree node.struct TreeNode {int val;TreeNode *left;TreeNode *right;TreeNode(int x) : val(x), left(NULL), r...
2020-03-03 22:20:00 96
原创 938二叉搜索树范围和
对二叉树进行遍历,再对比值/**Definition for a binary tree node.struct TreeNode {int val;TreeNode *left;TreeNode *right;TreeNode(int x) : val(x), left(NULL), right(NULL) {}};/class Solut...
2020-03-03 16:51:51 79
原创 1021去掉最外层括号
多一个计数器,若是’(‘则加一操作,若是’)'则减一操作当加一操作后技术器为1时,则将此位去掉,建议操作计数器得0时,将此位去掉class Solution {public:string removeOuterParentheses(string S){int count = 0;string tem = “”;for (int i = 0; i<S.size(); i++)...
2020-03-03 13:49:09 94
原创 反转链表
将链表里面的数字取出来,再倒着放回去就好了/**Definition for singly-linked list.struct ListNode {int val;ListNode *next;ListNode(int x) : val(x), next(NULL) {}};/class Solution {public:ListNode re...
2020-03-03 12:54:06 65
原创 25合并两个排序链表
创建两个同地址表头,再将其中一个对两个链表进行排序返回另一个表头->next,因为地址相同,所以返回的是排序好的链表/**Definition for singly-linked list.struct ListNode {int val;ListNode *next;ListNode(int x) : val(x), next(NULL) {}...
2020-03-03 12:26:49 77
原创 逆序输出链表值
先将链表值输出在一个vector中再将vector逆向输出/**Definition for singly-linked list.struct ListNode {int val;ListNode *next;ListNode(int x) : val(x), next(NULL) {}};/class Solution {public:vector ...
2020-02-29 23:13:24 134
原创 二叉树镜像问题
递归的将二叉树左右交换交换函数也可以直接写在一起Definition for a binary tree node.struct TreeNode {int val;TreeNode *left;TreeNode *right;TreeNode(int x) : val(x), left(NULL), right(NULL) {}};/class So...
2020-02-29 22:36:37 75
原创 237.删除链表中的节点
这道题主要就是在,给出的点就是要删除的点。只需要将链表后续的值往前挪一位,再将最后一位置NULL就ok/**Definition for singly-linked list.struct ListNode {int val;ListNode *next;ListNode(int x) : val(x), next(NULL) {}};/class Solu...
2020-02-29 18:13:09 62
原创 02.02
求倒数第几个将链表节点数求出,再减去K即可/**Definition for singly-linked list.struct ListNode {int val;ListNode *next;ListNode(int x) : val(x), next(NULL) {}};/class Solution {public:int kthToLast(L...
2020-02-28 13:59:20 132
原创 化栈为队
将栈化为队列我的想法是1、判断后一个队列里面是否有存值,若是有,栈顶即队首2、判断第一个栈是否有存值,若是有,栈顶即队尾class MyQueue {private:stack c_first;stack d_second;public:/** Initialize your data structure here. */MyQueue(){}/** Push elem...
2020-02-27 17:13:04 152
原创 LCP.1
LETCODE LCP.1猜数字class Solution {public:int game(vector& guess, vector& answer) { int ret = 0; for (int i = 0; i<guess.size(); i++) { if (guess[i] == answer[i]) { ret++; } }...
2020-02-25 15:54:07 196
原创 LETCODE 771
class Solution {public:int numJewelsInStones(string J, string S) {map<char, int> tem;int count = 0;for (auto i = S.begin(); i != S.end(); i++){tem[*i]++;}for (auto j = J.begin(); j != J...
2019-08-03 22:25:00 77
原创 TETCODE 1089
class Solution {public:void duplicateZeros(vector& arr) {vector tem;int size = 0;int asize = arr.size();for (auto it = arr.begin(); it != arr.end(); it++){if (*it == 0){tem.push_back(0);...
2019-08-03 22:14:05 96
原创 LETCODE 1103 distributeCandies
简单的数学逻辑问题我可能写的蠢了一点,结果没问题class Solution {public: vector<int> distributeCandies(int candies, int num_people) { vector<int> arry; int temp = candies; int neg = 0; int index; in...
2019-07-28 23:43:44 86
原创 LETCODE 1108 INVALID_ID
代码简单,按照题目要求做就行了public:string defangIPaddr(string address){vectortemp;string c;for (int i = 0; i < address.size(); i++){if (address[i] != ‘.’){temp.push_back(address[i]);}else{temp.pus...
2019-07-28 22:03:22 91
原创 LETCODE 1122 the related of array
这道题按照题目要求解答就可以了class Solution {public: vector<int> relativeSortArray(vector<int>& arr1, vector<int>& arr2) { map<int, int>arry; map<int, int>arry2; vec...
2019-07-28 21:11:16 95
原创 LETCODE 1128 dominoes
LETCODE 1128 dominoes这个题目暴力不行int numEquivDominoPairs(int** dominoes, int dominoesSize, int* dominoesColSize) { int eqsize = 0; for (int i = 0; i < dominoesSize - 1; i++) { dominoesColSize ...
2019-07-28 17:28:40 217
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人