学习记录

来源:互联网 发布:java c 效率 编辑:程序博客网 时间:2024/06/07 17:18

需要记录的一些算法:

  1. 找一个数组中的majority num 可以先找candidate 不断扫描 如果两个不同 就拿走所以 最后留下的那个肯定是majority的 如果抵消完了就 换个Candidate
    代码如下这里写图片描述
  2. 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); } 
  1. Intersection of Two Linked Lists
    这个先把两个链表遍历一遍 然后如果尾巴相同 则有交叉的
    然后比较两个长度 然后把他们调整成 从tail数相同长度的 然后就遍历
    看看 如果有相同的 则返回
    tips 写程序的时候应该把所以情况都想到
    比如 我一开始写的时候就没有考虑到下面的内容
struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {    if(headA==NULL||headB==NULL){        return NULL;    }}   
0 0
原创粉丝点击