大四狗找工做,要刷题了,leetcode上面题目比较适合面试算法类题目,也不纯粹为了蒙题,锻炼一下面试类型的思惟node
有N个数,其中只有一个数出现了一次,其余都是两次,找出那个数算法
把全部数求一下异或lua
Maximum Depth of Binary Tree:spa
求树的最大深度code
递归遍历一遍blog
Same Tree:递归
给两个树的根节点,看两棵树是否相同three
两棵树同时遍历一遍element
输出这个数倒过来的数
注意负数状况,模拟一下便可
Best Time to Buy and Sell Stock II:
模拟买东西卖东西赚钱
模拟便可
给定N个节点,问有多少种不一样的二叉树
卡特兰数经典案例,C(2n,n) / (n+1)
判断一个链表是否含有环
从head出发,一个一次一步,一个一次两步,若相交则有环,不然走到头就结束说明没有
Binary Tree Inorder Traversal:
中序遍历
Binary Tree Preorder Traversal:
前序遍历
Populating Next Right Pointers in Each Node:
把每层的节点按从左到右顺序连接起来,最后一个节点next指向null
void connect(TreeLinkNode *root) { if (root == NULL) return; connect(root->left); connect(root->right); TreeLinkNode *l = root->left; TreeLinkNode *r = root->right; while (l) { l->next = r; l = l->right; r = r->left; } }
Remove Duplicates from Sorted List:
删除相同数值的节点链表,已排好序
扫一遍,跟前一个相同就删了那个节点
给出target,求target应该插入的array的index
二分便可
经典的fbi数列
single numberI增强版,one,two,three分别表明出现的次数
int singleNumber(int A[], int n) { int one , two , three; one = two = three = 0; for (int i = 0;i < n;i ++) { two |= one&A[i]; one ^= A[i]; three = one & two; one &= ~three; two &= ~three; } return one; }
经典动态规划,求最长连续序列和
去掉array中的element元素
不用额外资源,跟尾资源swap
合并两个有序链表
Convert Sorted Array to Binary Search Tree:
Remove Duplicates from Sorted Array:
Best Time to Buy and Sell Stock:
Remove Nth Node From End of List:
Best Time to Buy and Sell Stock III: