1. TwoSum

  https://www.cnblogs.com/zhacai/p/10429120.html  easy

2. Add Two Numbers

  https://www.cnblogs.com/zhacai/p/10429155.html  easy

15.3Sum

  https://www.cnblogs.com/zhacai/p/10579514.html medium set

20.Valid Parentheses

  https://www.cnblogs.com/zhacai/p/10429168.html  easy

21.Merge Two Sorted Lists

  https://www.cnblogs.com/zhacai/p/10429234.html  easy  

22.Generate Parentheses

  https://www.cnblogs.com/zhacai/p/10599156.html medium DFS 剪枝

49.Group Anagrams

  https://www.cnblogs.com/zhacai/p/10576638.html medium 哈希 map

53.Maximum Subarray 

  https://www.cnblogs.com/zhacai/p/10429247.html  easy

70.Climbing Stairs

  https://www.cnblogs.com/zhacai/p/10429253.html  easy

72.Edit Distance

  https://www.cnblogs.com/zhacai/p/10661858.html hard dp

79.Word Search

  https://www.cnblogs.com/zhacai/p/10641454.html medium DFS

94. Binary Tree Inorder Traversal

  https://www.cnblogs.com/zhacai/p/10435799.html  medium 树的中序遍历<递归><迭代(栈)>

98.Validate Binary Search Tree

  https://www.cnblogs.com/zhacai/p/10592337.html medium 二叉搜索树 中序遍历 递归

102.Binary Tree Level Order Traversal

  https://www.cnblogs.com/zhacai/p/10598674.html medium 树 BFS

104.Maxinum Depth of Binary Tree  

  https://www.cnblogs.com/zhacai/p/10429258.html  easy 树DFS

121. Best Time to Buy and Sell Stock

  https://www.cnblogs.com/zhacai/p/10429264.html  easy

136. Single Number  

  https://www.cnblogs.com/zhacai/p/10429270.html  easy

141. Linked List Cycle

  https://www.cnblogs.com/zhacai/p/10560803.html easy 链表 快慢指针

142. Linked List Cycle II 

  https://www.cnblogs.com/zhacai/p/10561152.html medium 链表 快慢指针

146. LRU Cache

  https://www.cnblogs.com/zhacai/p/10665121.html hard LRUCache linkedHashMap hashmap+双向链表

152. Maximum Product Subarray

  https://www.cnblogs.com/zhacai/p/10644095.html medium dp

155. Min Stack

  https://www.cnblogs.com/zhacai/p/10429280.html  easy

169.Majority Element

  https://www.cnblogs.com/zhacai/p/10429286.html  easy

200.Number of Islands

  https://www.cnblogs.com/zhacai/p/10662241.html medium dfs 并查集

206.ReverseLinked List

  https://www.cnblogs.com/zhacai/p/10429295.html  easy 链表

208.Implement Trie(Prefix Tree)

  https://www.cnblogs.com/zhacai/p/10640769.html medium 字典树

226.Invert Binary Tree  

  https://www.cnblogs.com/zhacai/p/10431018.html  easy 树 递归

236.Lowest Common Ancestor of a Binary Tree

  https://www.cnblogs.com/zhacai/p/10592779.html medium 树 递归

239.Sliding Window Maximum

  https://www.cnblogs.com/zhacai/p/10567783.html  hard 双向队列 大顶堆

283.Move Zeroes

  https://www.cnblogs.com/zhacai/p/10431000.html  easy

300.Longest Increasing Subsequence

  https://www.cnblogs.com/zhacai/p/10661330.html medium dp

309.Best Time to Buy and Sell Stock with Cooldown

  https://www.cnblogs.com/zhacai/p/10655970.html medium dp

322.Coin Change

  https://www.cnblogs.com/zhacai/p/10661489.html medium dp

338. Counting Bits

  https://www.cnblogs.com/zhacai/p/10430986.html  easy  位运算 找规律

347. Top K Frequent Elements(待完善)

  https://www.cnblogs.com/zhacai/p/10436261.html  medium 排序 map

438.Find All Anagrams in a String

  https://www.cnblogs.com/zhacai/p/10596274.html  easy 滑动窗口 map

448. Find All Numbers Disappeared in an Array

Given an array of integers where 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others appear once. Find all the elements of [1, n] inclusive that do not appear in this array. Could you do it without extra space and in O(n) runtime? You may assume the returned list does not count as extra space.

Example:

Input:
[4,3,2,7,8,2,3,1] Output:
[5,6]
public List<Integer> findDisappearedNumbers(int[] nums) {
for (int i = 0; i < nums.length; i++) {
int x = nums[i]<0?-nums[i]:nums[i];
if(nums[x-1]>0){
nums[x-1]= -nums[x-1];
}
}
List<Integer> re = new ArrayList<Integer>();
for (int i = 0; i < nums.length; i++) {
if(nums[i]>0){
re.add(i+1);
}
}
return re;
}

    

461.Hamming Distance  

The Hamming distance between two integers is the number of positions at which the corresponding bits are different.Given two integers x and y, calculate the Hamming distance.

Note:0 ≤ xy < 231.

Example:

Input: x = 1, y = 4

Output: 2

Explanation:
1 (0 0 0 1)
4 (0 1 0 0)
↑ ↑ The above arrows point to positions where the corresponding bits are different.
public int hammingDistance(int x, int y) {//位运算
int n = x^y;
int re = 0;
//计算整数二进制中1的个数
while(0!=n){
n=n&(n-1);
re++;
}
return re;
}

538.Convert BST to Greater Tree

Given a Binary Search Tree (BST), convert it to a Greater Tree such that every key of the original BST is changed to the original key plus sum of all keys greater than the original key in BST.

Example:

Input: The root of a Binary Search Tree like this:
5
/ \
2 13 Output: The root of a Greater Tree like this:
18
/ \
20 13
class Solution {
int sum=0;
public TreeNode convertBST(TreeNode root) {//树
if(null!=root){
TreeNode right = convertBST(root.right);
root.val+=sum;
sum = root.val;
TreeNode left = convertBST(root.left);
}
return root;
}
}

  

543.Diameter of Binary Tree

Given a binary tree, you need to compute the length of the diameter of the tree. The diameter of a binary tree is the length of the longest path between any two nodes in a tree. This path may or may not pass through the root.

Example:
Given a binary tree

          1
/ \
2 3
/ \
4 5

Return 3, which is the length of the path [4,2,1,3] or [5,2,1,3].

Note: The length of path between two nodes is represented by the number of edges between them.

class Solution {
int re;
public int diameterOfBinaryTree(TreeNode root) {//树的深度 递归
re =0;
maxDepth(root);
return re;
}
public int maxDepth(TreeNode root) {
if(null==root){
return 0;
}
int ld=maxDepth(root.left);
int lr = maxDepth(root.right);
int d = ld>lr?(ld+1):(lr+1);
re =re>(ld+lr)?re:(ld+lr);
return d;
}
}

  

617.Merge Two Binary Trees

Given two binary trees and imagine that when you put one of them to cover the other, some nodes of the two trees are overlapped while the others are not. You need to merge them into a new binary tree. The merge rule is that if two nodes overlap, then sum node values up as the new value of the merged node. Otherwise, the NOT null node will be used as the node of new tree.

Example 1:

Input:
Tree 1 Tree 2
1 2
/ \ / \
3 2 1 3
/ \ \
5 4 7
Output:
Merged tree:
3
/ \
4 5
/ \ \
5 4 7

Note: The merging process must start from the root nodes of both trees.

public TreeNode mergeTrees(TreeNode t1, TreeNode t2) {//树 递归
if(null==t1&&null==t2){
return null;
}
if(null==t1){
return t2;
}
if(null==t2){
return t1;
}
TreeNode left=mergeTrees(t1.left,t2.left);
TreeNode right = mergeTrees(t1.right,t2.right);
TreeNode node = new TreeNode(t1.val+t2.val);
node.left=left;
node.right=right;
return node;
}  

简洁写法

public TreeNode mergeTrees(TreeNode t1, TreeNode t2) {
if (t1 == null)
return t2;
if (t2 == null)
return t1;
t1.val += t2.val;
t1.left = mergeTrees(t1.left, t2.left);
t1.right = mergeTrees(t1.right, t2.right);
return t1;
}  

非递归方法

public class Solution {
public TreeNode mergeTrees(TreeNode t1, TreeNode t2) {
if (t1 == null)
return t2;
Stack < TreeNode[] > stack = new Stack < > ();
stack.push(new TreeNode[] {t1, t2});
while (!stack.isEmpty()) {
TreeNode[] t = stack.pop();
if (t[0] == null || t[1] == null) {
continue;
}
t[0].val += t[1].val;
if (t[0].left == null) {
t[0].left = t[1].left;
} else {
stack.push(new TreeNode[] {t[0].left, t[1].left});
}
if (t[0].right == null) {
t[0].right = t[1].right;
} else {
stack.push(new TreeNode[] {t[0].right, t[1].right});
}
}
return t1;
}
}

  

771. Jewels and Stones

  https://www.cnblogs.com/zhacai/p/10429670.html  easy  

  

  

7.Reverse Integer  

Given a 32-bit signed integer, reverse digits of an integer.

Example 1:

Input: 123
Output: 321

Example 2:

Input: -123
Output: -321

Example 3:

Input: 120
Output: 21

Note:Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [−231,  231 − 1]. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.

public int reverse(int x) {
String str= String.valueOf(x);
StringBuffer strb;
int re=0;
if('-'==str.charAt(0)){
strb = new StringBuffer(str.substring(1,str.length())).reverse();
strb.insert(0,"-");
}
else {
strb= new StringBuffer(str).reverse();
}
try{
re =Integer.valueOf(strb.toString());
}catch (Exception e){ }
return re;
}  

使用数学方法的优解

public int reverse(int x) {
int re = 0;
while(0!=x){
int temp = re * 10 + x % 10;
if(temp / 10 != re)//如果整数不溢出显然相等
return 0;
re = temp;
x /= 10;
}
return re;
}

  

 

LeetCode Top100 Liked Questions的更多相关文章

  1. LeetCode Top Interview Questions

    LeetCode Top Interview Questions https://leetcode.com/problemset/top-interview-questions/ # No. Titl ...

  2. leetcode TOP100 两数相加

    两数相加 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链表来表 ...

  3. leetcode TOP100 字母异位词分组

    字母异位词分组 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 思路: 一个map,将每个字符串字符进行记数,字符作为map的key,次数初始为零,以此来标识字 ...

  4. leetcode TOP100 比特位计数

    338. 比特位计数 题目描述: `给定一个非负整数 num.对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回. 示例 1: 输入: 2 输出: ...

  5. 214. Shortest Palindrome

    题目: Given a string S, you are allowed to convert it to a palindrome by adding characters in front of ...

  6. [LeetCode] questions conclusion_ Binary Search

    Binary Search T(n) = T(n/2) + O(1)   =>    T(n) = O(lg n) proof: 如果能用iterable , 就用while loop, 可以防 ...

  7. [LeetCode] questions conlusion_InOrder, PreOrder, PostOrder traversal

    Pre: node 先,                      Inorder:   node in,           Postorder:   node 最后 PreOrder Inorde ...

  8. [LeetCode] All questions numbers conclusion 所有题目题号

    Note: 后面数字n表明刷的第n + 1遍, 如果题目有**, 表明有待总结 Conclusion questions: [LeetCode] questions conclustion_BFS, ...

  9. [LeetCode] questions conclusion_ Dynamic Programming

    Questions: [LeetCode] 198. House Robber _Easy tag: Dynamic Programming [LeetCode] 221. Maximal Squar ...

随机推荐

  1. socket 中文man页面函数

    Linux 套接字的用户接口. 这个 BSD 兼容套接字是介于用户进程与内核网络协议栈之间的统一接口, 各协议模块属于不同的 协议族 ,如 PF_INET, PF_IPX, PF_PACKET 和 套 ...

  2. Android学习之SeekBar(控制wav音频的声音)

    使用SeekBar调节声音 SeekBar控件其实就是一个高级点的进度条,就像我们在听歌,看电影用的播放器上的进度条一样,是可以拖动的,可以改变进度的一个进度条控件! SeekBar常用属性: and ...

  3. 浅谈千万级PV/IP规模高性能高并发网站架构

    高并发访问的核心原则其实就一句话“把所有的用户访问请求都尽量往前推”. 如果把来访用户比作来犯的"敌人",我们一定要把他们挡在800里地以外,即不能让他们的请求一下打到我们的指挥部 ...

  4. linux 查看版本

    输入"uname -a ",可显示电脑以及操作系统的相关信息. 输入"cat /proc/version",说明正在运行的内核版本.输入"cat /e ...

  5. Material Design系列第五篇——Working with Drawables

    Working with Drawables This lesson teaches you to Tint Drawable Resources Extract Prominent Colors f ...

  6. makefile高级应用

    https://www.zybuluo.com/lishuhuakai/note/206938 make是Linux下的一款程序自动维护工具,配合makefile的使用,就能够根据程序中模块的修改情况 ...

  7. 从零开始学习Hadoop--第4章 序列化(转载)

    作者对序列化的描述浅显易懂!(https://www.douban.com/note/313096752/) 1. 序列化从头说 在面向对象程序设计中,类是个很重要的概念.所谓“类”,可以将它想像成建 ...

  8. linux常用命令大全3--rpm安装软件

    RPM 包 - (Fedora, Redhat,CentOS及类似系统) rpm -ivh package.rpm 安装一个rpm包 rpm -ivh --nodeeps package.rpm 安装 ...

  9. CentOS7下Elastic Stack 5.0日志分析系统搭建

    原文链接:http://www.2cto.com/net/201612/572296_3.html 在http://localhost:5601下新建索引页面输入“metricbeat-*”,之后ki ...

  10. 上拉刷新和下拉刷新的两种方法(包括使用第三方库MJRefresh)

    一.使用苹果原生的方法 1.下拉刷新 2.上拉刷新 (1 首先要新建一个footer得XIB文件,当然同时包括对应的控制器文件,例如在XIB文件中可以如下拖拉对应的控件 (2 然后在代码文件中写一个实 ...