码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode日记3

时间:2015-11-13 11:51:23      阅读:297      评论:0      收藏:0      [点我收藏+]

标签:

(2015/11/3)

LeetCode-36 Valid Sudoku:(easy)

1)使用数据结构

set<char> emptyset;

vector<set<char>> mp(27, emptyset);

2)下标0-8存储行中的数字,9-17存储列中的数字,18-26存储3×3块中数字。

3)双重for循环中,i表示行,9 + j表示列,18 + i / 3 + 3 * (j / 3)表示块。



(2015/11/12)

LeetCode-38 Count and Say:(easy)

1)判断参数n,返回直接输出的部分。

2)双重for循环。


LeetCode-58 Length of Last Word:(easy)

LeetCode-66 Plus One:(easy)

LeetCode-67 Add Binary:(easy)


LeetCode-70 Climbing Stairs:(easy)

1)爬楼梯,裴波那契数列。

2)公式F(1)=1, F(2)=2,........F(n)=F(n-1)+F(n-2)。


LeetCode-83 Remove Duplicates from Sorted List:(easy)

1)删除已排序的链表中的重复节点。

2)处理输入为空链表的情况。

3)使用两个指针,一个记录上一个节点,一个寻找下一个不同的节点。找到就做指针的变换(无论变换前后是否真的改变了指针)。


LeetCode-88 Merge Sorted Array:(easy)

1)题目理解:m和n是数组中已经初始化的元素。也就是说数组的大小可能比m和n大,且数组中可能有未初始化的元素。


LeetCode-100 Same Tree:(easy)

1)错误思路:分别计算出两棵树的中序遍历和先序遍历,判断他们是否相等。

错误的例子:[1,1] 和 [1,NULL,1]

2)正确思路:同时对两棵树进行遍历。递归实现。



(2015/11/14)

LeetCode-101 Symmetric Tree:(cant)

1)错误思路:对树进行 ”左子树-根-右子树“和”右子树-根-左子树“遍历后序列相等,则树是对称的。(异想天开)

错误的例子:[1,2,3,3,NULL,2,NULL]

2)正确思路:同100题,必须同时向两边进行遍历。

3)参考:https://leetcode.com/discuss/26705/15-lines-of-c-solution-8-ms

递归对二叉树进行对称遍历:

class Solution {
public:
    bool isSymmetric(TreeNode* root) {
        if(root == NULL) return true;
        else return func(root->left, root->right);
    }
private:
    bool func(TreeNode *p, TreeNode *q){
        if(p == NULL && q == NULL) return true;
        else if(p == NULL || q == NULL) return false;
        else{
            if(p->val != q->val) return false;
            else return func(p->left, q->right) && func(p->right, q->left);
        }
    }

};


LeetCode-102 Binary Tree Level Order Traversal:(easy)

对二叉树按层遍历。

1)思路:用队列存放每一层的节点的指针。


LeetCode-104 Maximum Depth of Binary Tree:(easy)

求二叉树叶子节点的最大深度。

1)思路:形参ans存放目前叶子节点的最大深度(引用);形参now存放当前这次遍历的当前深度。

class Solution {
public:
    int maxDepth(TreeNode* root) {
        int ans = 0;
        DFS(root, ans, 0);
        return ans;
    }
private:
    void DFS(TreeNode *T, int &ans, int now){
        if(T == NULL){
            if(now > ans) ans = now;
        }
        else{
            now++;
            DFS(T->left, ans, now);
            DFS(T->right, ans, now);
        }
        return;
    }
};


LeetCode-107 Binary Tree Level Order Traversal II:(easy)

LeetCode-102 Binary Tree Level Order Traversal。

1)最后在返回前,对vector<vector<int>> 变量进行一次reverse函数调用即可。



LeetCode日记3

标签:

原文地址:http://my.oschina.net/u/2463708/blog/529784

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!