需要记录的一些算法:
- 找一个数组中的majority num 可以先找candidate 不断扫描 如果两个不同 就拿走所以 最后留下的那个肯定是majority的 如果抵消完了就 换个Candidate
代码如下 - Same Tree 就目前理解 递归应该是现有一个基准情况 最小的单位 而如果还没到这种基本情况 就要往下走 就如这个Same Tree 只有两个都是NULL的时候 才返回true 否则这两个val相同 然后就要比较接下来的 左子树 右子树 并且return值 所以是不是比较这一层并递归下一层就行了呢
代码如下
bool isSameTree(struct TreeNode* p, struct TreeNode* q)
{ if(p==NULL&&q==NULL){ return true; }
if(p==NULL||q==NULL){ return false; }
if(p->val!=q->val){ return false; }
return isSameTree(p->left,q->left)&&isSameTree(p->right,q->right); }
- Intersection of Two Linked Lists
这个先把两个链表遍历一遍 然后如果尾巴相同 则有交叉的
然后比较两个长度 然后把他们调整成 从tail数相同长度的 然后就遍历
看看 如果有相同的 则返回
tips 写程序的时候应该把所以情况都想到
比如 我一开始写的时候就没有考虑到下面的内容
struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {
if(headA==NULL||headB==NULL){
return NULL;
}
}