235. Lowest Common Ancestor of a Binary Search Tree

公共的祖先必定大于左点小于右点,否则不断递归到合适。

class Solution {
public:
TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
if ((root -> val > p -> val) && (root -> val > q -> val)) {
return lowestCommonAncestor(root -> left, p, q);
}
if ((root -> val < p -> val) && (root -> val < q -> val)) {
return lowestCommonAncestor(root -> right, p, q);
}
return root;
}
}; ///////////////////////////////// class Solution {
public:
TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
TreeNode* cur = root;
while (true) {
if ((cur -> val > p -> val) && (cur -> val > q -> val)) {
cur = cur -> left;
} else if ((cur -> val < p -> val) && (cur -> val < q -> val)) {
cur = cur -> right;
} else {
return cur;
}
}
}
};

257. Binary Tree Paths

void binaryTreePaths(vector<string>& result, TreeNode* root, string t) {
if(!root->left && !root->right) {
result.push_back(t);
return;
} if(root->left) binaryTreePaths(result, root->left, t + "->" + to_string(root->left->val));
if(root->right) binaryTreePaths(result, root->right, t + "->" + to_string(root->right->val));
} vector<string> binaryTreePaths(TreeNode* root) {
vector<string> result;
if(!root) return result; binaryTreePaths(result, root, to_string(root->val));
return result;
}

258. Add Digits

Iteration method

  class Solution(object):
def addDigits(self, num):
"""
:type num: int
:rtype: int
"""
while(num >= 10):
temp = 0
while(num > 0):
temp += num % 10
num /= 10
num = temp
return num
Digital Root this method depends on the truth: N=(a[0] * 1 + a[1] * 10 + ...a[n] * 10 ^n),and a[0]...a[n] are all between [0,9] we set M = a[0] + a[1] + ..a[n] and another truth is that: 1 % 9 = 1 10 % 9 = 1 100 % 9 = 1 so N % 9 = a[0] + a[1] + ..a[n] means N % 9 = M so N = M (% 9) as 9 % 9 = 0,so we can make (n - 1) % 9 + 1 to help us solve the problem when n is 9.as N is 9, ( 9 - 1) % 9 + 1 = 9

///就是一个数的数根等于该数各位数的和的mod 9
/// (num-1)%9+1 等于 num%9,这为了解决9的树根时9而不是0的问题
class Solution(object):
def addDigits(self, num):
"""
:type num: int
:rtype: int
"""
if num == 0 : return 0
else:return (num - 1) % 9 + 1

263. Ugly Number

bool isUgly(int num) {
if(num == ) return false; while(num% == ) num/=;
while(num% == ) num/=;
while(num% == ) num/=; return num == ;
}

268. Missing Number

1.XOR
相同则为0。num[]的数字和下标一样
public int missingNumber(int[] nums) { //xor
int res = nums.length;
for(int i=0; i<nums.length; i++){
res ^= i;
res ^= nums[i];
}
return res;
}
2.SUM
public int missingNumber(int[] nums) { //sum
int len = nums.length;
int sum = (0+len)*(len+1)/2;
for(int i=0; i<len; i++)
sum-=nums[i];
return sum;
}
3.Binary Search
public int missingNumber(int[] nums) { //binary search
Arrays.sort(nums);
int left = 0, right = nums.length, mid= (left + right)/2;
while(left<right){
mid = (left + right)/2;
if(nums[mid]>mid) right = mid;
else left = mid+1;
}
return left;
}
Summary:
If the array is in order, I prefer Binary Search method. Otherwise, the XOR method is better.

283. Move Zeroes

class Solution {
public:
void moveZeroes(vector<int>& nums) {
int j = ;
// move all the nonzero elements advance
for (int i = ; i < nums.size(); i++) {
if (nums[i] != ) {
nums[j++] = nums[i];
}
}
for (;j < nums.size(); j++) {
nums[j] = ;
}
}
};

290. Word Pattern

Input: pattern = "abba", str = "dog cat cat dog"
Output: true
bool wordPattern(string pattern, string str) {
map<char, int> p2i;
map<string, int> w2i;
istringstream in(str);
int i = , n = pattern.size();
for (string word; in >> word; ++i) {
if (i == n || p2i[pattern[i]] != w2i[word])
return false;
p2i[pattern[i]] = w2i[word] = i + ;
}
return i == n;
}

leetcode 235-290 easy的更多相关文章

  1. (easy)LeetCode 235.Lowest Common Ancestor of a Binary Search Tree

    Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BS ...

  2. [LeetCode] 235. Lowest Common Ancestor of a Binary Search Tree 二叉搜索树的最小共同父节点

    Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BS ...

  3. LeetCode 235. 二叉搜索树的最近公共祖先 32

    235. 二叉搜索树的最近公共祖先 235. Lowest Common Ancestor of a Binary Search Tree 题目描述 给定一个二叉搜索树,找到该树中两个指定节点的最近公 ...

  4. LeetCode 235. 二叉搜索树的最近公共祖先

    235. 二叉搜索树的最近公共祖先 题目描述 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个结点 p.q,最近公共祖先 ...

  5. LeetCode 235. Lowest Common Ancestor of a Binary Search Tree (二叉搜索树最近的共同祖先)

    Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BS ...

  6. 【一天一道LeetCode】#290. Word Pattern

    一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given a ...

  7. leetcode 235. Lowest Common Ancestor of a Binary Search Tree 236. Lowest Common Ancestor of a Binary Tree

    https://www.cnblogs.com/grandyang/p/4641968.html http://www.cnblogs.com/grandyang/p/4640572.html 利用二 ...

  8. 【leetcode】290. Word Pattern

    problem 290. Word Pattern 多理解理解题意!!! 不过博主还是不理解,应该比较的是单词的首字母和pattern的顺序是否一致.疑惑!知道的可以分享一下下哈- 之前理解有误,应该 ...

  9. leetcode 235 236 二叉树两个节点的最近公共祖先

    描述: 给定二叉树两个节点,求其最近公共祖先.最近即所有公共祖先中深度最深的. ps:自身也算自身的祖先. 235题解决: 这是二叉搜索树,有序的,左边小右边大. TreeNode* lowestCo ...

  10. 【Leetcode】【Easy】String to Integer (atoi)

    Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input cases. ...

随机推荐

  1. PAT甲级——A1080 Graduate Admission

    It is said that in 2011, there are about 100 graduate schools ready to proceed over 40,000 applicati ...

  2. 《DSP using MATLAB》Problem 8.9

    代码: %% ------------------------------------------------------------------------ %% Output Info about ...

  3. php从5.6升级到php7后,扩展出现segment fault的问题解决

    php7的文档中有这样的描述: Both mistakes might cause memory corruptions and segfaults:1)char *str;long str_len; ...

  4. Linux 启动dubbo管控台:

  5. Leetcode 242.有效的字母异位词(Python3)

    题目: 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词. 示例 1: 输入: s = "anagram", t = "nagaram& ...

  6. 使用 MongoDB shell访问MongoDB

  7. 如何使用log4j记录日志

    1.下载jar包 http://logging.apache.org/log4j 2.将jar包加入项目 放在lib(没有就创建)下 对已经复制过来的jar包鼠标点击右键,选中BuildPath  - ...

  8. 次短路poj3463

    poj3463大意:统计最小的长度个数+统计最小的长度+1的个数,大概就是求最短路和次短路的条数更新的时候有5种情况,有个细节就是它得是二维的,一个表示节点编号,一个0/1表示它是次短路的还是最短路的 ...

  9. python使用suds来调用webservice

    对于python仅作为客户端调用webservice的情况,推荐使用suds库来完成,比起zsi,soapy之类,它可以说是相当轻量级,使用非常方便. 安装suds建议使用easy_insall来做. ...

  10. 这款 IDE 插件再次升级,让「小程序云」的开发部署提速 8 倍

    今年3月份,在阿里云北京峰会上,阿里巴巴正式发布了“阿里巴巴小程序繁星计划”,截至当前,已经有成千上万的开发者加入这个计划,使得小程序得到蓬勃发展,然而不可避免的是,这些服务加重了对云端的开发部署.运 ...