LeetCode题解
收藏

算法是程序员的基本功。LeetCode上的算法题目既包含数学和字符串处理等基础算法,数组、链表、栈、堆、树等基本数据结构,也包含了动态规划、贪心算法等高级分析技术。本专栏内文章按题目分类,给出一个基本的分析和AC的解法,部分题目可能并非最优解,欢迎大家共同讨论。

分享到: Sina Tec

最近更新文章

LeetCode[贪心算法] - #122 Best Time to Buy and Sell Stock II

原题链接:#122 Best Time to Buy and Sell Stock II   要求: 假定你有一个包含n个元素的整型数组,其中的第i个元素是指定股票在第i天的价格。 设计一个算法来计算在这n天里可能获得的最大利润。注:只考虑单只该股票的买入和卖出时机,一天内可以买卖多次,但不允许同一时间内存在多次交易(即:再次买入之前,必须买入该股票)   难度:中等   分析: ...
Cwind 评论(0) 有3836人浏览 2015-11-08 21:46

LeetCode[排序] - #148 Sort List

原题链接:#148 Sort List   要求: 给一个单向链表排序,要求时间复杂度为O(nlogn)且空间复杂度为O(1)。 单向链表定义如下: class ListNode{ int val; ListNode next; ListNode(int x){ this.val = x; } }   难度:中等   分 ...
Cwind 评论(0) 有3222人浏览 2015-08-13 10:21

LeetCode[排序] - #242 Valid Anagram

原题链接:#242 Valid Anagram   要求: 给定两个字符串s和t,写一个函数,判断t是否是s的变位词。 如果t跟s包含相同字符但排列顺序不同,则称t是s的变位词。 例如: s = "anagram", t ="nagaram",返回true s = "rat", t = "car",返回f ...
Cwind 评论(3) 有4000人浏览 2015-08-11 19:39

LeetCode[动态规划] - #5 Longest Palindromic Substring

原题链接:#5 Longest Palindromic SubString   要求: 给定一个字符串S,找出它的最长回文子串。假定S的最大长度为1000,且最长回文子串唯一   难度:中等   分析: 假定字符串s为回文字符串,则在s头部和尾部分别添加相同字符串[x],所得结果s'=[x]s[x]也为回文字符串(论述1)。可使用动态规划方法解决此问题,递推公式便基于此特性。 创 ...
Cwind 评论(3) 有5433人浏览 2015-08-04 22:52

LeetCode[动态规划] - #198 House Robber

原题链接:#198 House Robber   要求: 原题是要为某盗贼设计一个能使其利益最大化的方案(这个场景并不和谐,在保持题意的情况下重新描述一个场景)。假设某糖果工厂有若干糖果机,每台糖果机每天产出不同数量的糖果,每天取糖果时不能同时取相邻两台糖果机的糖果(别问为什么),问每天能取得的最大糖果数量是多少。   糖果机产生的糖果数量集合可以看成一个整型数组。   难度:简单 ...
Cwind 评论(0) 有3229人浏览 2015-08-03 15:17

LeetCode[Array] - #217 Contains Duplicate

原题链接:#217 Contains Duplicate   要求: 给定一个整型数组,判断它是否包含重复元素。当任一元素函数应当返回true,当所有元素各不相同时返回false。   难度:简单   分析: 与#1 Two Sum类似,可以两次循环遍历,依次判断每一个元素是否在其后出现;或者使用一个HashSet作为辅助结构,遍历数组,若某元素不在HashSet中则将其加入Set ...
Cwind 评论(0) 有2104人浏览 2015-07-31 22:56

LeetCode[Array] - #1 Two Sum

原题链接:#1 Two Sum   要求: 给定一个整数数组,找出其中的两个数,使之相加能够得到目标数字。 函数twoSum应当返回这两个数的索引,index1应小于index2。请注意,这两个索引并非从零开始计数。 假定每个输入都有且只有一个解。   例: 输入:numbers{2, 7, 11, 15}, target=9 输出:index1=1, index2=2   ...
Cwind 评论(3) 有2143人浏览 2015-07-31 22:25

LeetCode[字符串] - #3 Longest Substring Without Repeating Characters

原题链接:#3 Longest Substring Without Repeating Characters   要求: 给定一个字符串,找到它没有重复字符的最长子串的长度。例如,"abcabcbb"的无重复字符最长子串为"abc",其长度为3。对于由相同字符组成的字符串"bbbbb",其最长子串为"b",故返回 ...
Cwind 评论(0) 有2014人浏览 2015-07-20 16:57

LeetCode[链表] - #2 Add Two Numbers

原题链接:#2 Add Two Numbers   要求: 给定两个以链表表示的非负整数,链表中的每个节点保存整数中的一位,以倒序排列(例如,321表示为1->2->3)。把这两个数字相加,作为一个链表返回。   输入:(2->4->3) + (5->6->4) 输出:7->0->8   难度:中等   分析: 本题思路比较直接 ...
Cwind 评论(0) 有2138人浏览 2015-07-20 16:23

LeetCode[链表] - #21 Merge Two Sorted Lists

原题链接:#21 Merge Two Sorted Lists   要求: 合并两个已排序的单向链表,将合并后的结果作为一个链表返回。 ListNode定义: public class ListNode { int val; ListNode next; ListNode(int x) { val = x; } }   难度:简单   分析: 由 ...
Cwind 评论(0) 有2143人浏览 2015-07-20 16:01

LeetCode[动态规划] - #10 Regular Expression Matching

原题链接:#10 Regular Expression Matching   要求: 实现正则表达式匹配,支持'.'和'*'。   '.'匹配任意单字符。 '*'匹配任何0个或多个之前元素。   匹 ...
Cwind 评论(0) 有6495人浏览 2015-07-20 12:25

LeetCode[动态规划] - #7 Climbing Stairs

原题链接:#7 Climbing Stairs   问题: 你正在攀爬一把一共有n个台阶的梯子,每次可以爬一或二阶,爬到顶共有多少种不同的方式?   难度:简单   分析: 当梯子阶数为0时,有0种攀爬方式;当阶数为1时,则有一种攀爬方式。当阶数为2时,由于每次可以爬一阶或两阶,即从0阶处爬两阶到达顶部或由1阶处爬1阶到达顶处,共2种方式。n=3时同样,可以由1阶处爬两阶或由2阶处 ...
Cwind 评论(0) 有2162人浏览 2015-07-19 23:03

LeetCode[Math] - #7 Reverse Integer

原题链接:#7 Reverse Integer   要求: 按位反转输入的数字 例1: 输入 x = 123, 返回 321 例2: 输入 x = -123, 返回 -321   难度:简单   分析: 对于一般情况,首先保存输入数字的符号,然后每次取输入的末位(x%10)作为输出的高位(result = result*10 + x%10)即可。但须考虑边界情况,即输入大于In ...
Cwind 评论(0) 有1582人浏览 2015-07-18 23:10

LeetCode[Math] - #66 Plus One

原题链接:#66 Plus One   要求: 给定一个用数字数组表示的非负整数,如num1 = {1, 2, 3, 9}, num2 = {9, 9}等,给这个数加上1。 注意: 1. 数字的较高位存在数组的头上,即num1表示数字1239 2. 每一位(数组中的每个元素)的取值范围为0~9   难度:简单   分析: 题目比较简单,只须从数组尾部开始,若当前位是9则向前一 ...
Cwind 评论(0) 有2635人浏览 2015-07-18 22:57

LeetCode[位运算] - #137 Single Number II

原题链接:#137 Single Number II  要求: 给定一个整型数组,其中除了一个元素之外,每个元素都出现三次。找出这个元素 注意:算法的时间复杂度应 ...
Cwind 评论(0) 有3589人浏览 2015-07-18 22:18

LeetCode[Math] - #9 Palindrome Number

原题链接:#9 Palindrome Number   要求: 判断一个整数是否是回文数,不要使用额外的存储空间   难度:简单   分析: 题目限制不允许使用额外的存储空间应指不允许使用O(n)的内存空间,O(1)的内存用于存储中间结果是可以接受的。于是考虑将该整型数反转,然后与原数字进行比较。 注:没有看到有关负数是否可以是回文数的明确结论,例如-1,-121等。根据Lee ...
Cwind 评论(0) 有2078人浏览 2015-03-24 18:42

LeetCode[位运算] - #136 数组中的单一数

原题链接:#136 Single Number 要求: 给定一个整型数组,其中除了一个元素之外,每个元素都出现两次。找出这个元素 注意:算法的时间复杂度应为O(n),最好不使用额外的内存空间 难度:中等 分析: 题目限定了线性的时间复杂度,同时不使用额外的空间,即要求只遍历数组一遍得出结果。由于异或运算 n XOR n = 0, n XOR 0 = n,故将数组中的每个元素进行异或运 ...
Cwind 评论(0) 有1534人浏览 2015-03-20 08:21

LeetCode[位运算] - #191 计算汉明权重

原题链接:#191 Number of 1 Bits 要求: 写一个函数,以一个无符号整数为参数,返回其汉明权重。例如,‘11’的二进制表示为'00000000000000000000000000001011', 故函数应当返回3。 汉明权重:指一个字符串中非零字符的个数;对于二进制串,即其中‘1’的个数。 难度:简单 分析: 将十进制参数转换为二进制,然后计算其中1的个数即可。 ...
Cwind 评论(4) 有3227人浏览 2015-03-18 19:29
  • 专栏创建者:Cwind
  • 创建时间:2015-07-19 23:24:01
  • 专栏文章数:18篇
  • 专栏被浏览:53564 次

本专栏热门文章

最新评论

用两个hash表,O(N)public boolean isAnagram(String str0, ...
kyzaqlx 评论了 LeetCode[排序] - #242 Valid Anagram
cywhoyi 写道两个stack,是不是也行啊?O(N)介绍下算法思路?我还没想明白用stack该怎 ...
Cwind 评论了 LeetCode[排序] - #242 Valid Anagram
两个stack,是不是也行啊?O(N)
cywhoyi 评论了 LeetCode[排序] - #242 Valid Anagram
Cwind 写道cywhoyi 写道有点意思,比起KMP简单得多,上次跟人介绍KMP,烦死了这个算是比 ...
cywhoyi 评论了 LeetCode[动态规划] - #5 Longest Palindr ...
cywhoyi 写道有点意思,比起KMP简单得多,上次跟人介绍KMP,烦死了这个算是比较简单的DP应用 ...
Cwind 评论了 LeetCode[动态规划] - #5 Longest Palindr ...
有点意思,比起KMP简单得多,上次跟人介绍KMP,烦死了
cywhoyi 评论了 LeetCode[动态规划] - #5 Longest Palindr ...
Cwind 写道cywhoyi 写道想到另一种方式1.排好序,O(NlgN),有特殊方式定好坐标,比如 ...
cywhoyi 评论了 LeetCode[Array] - #1 Two Sum
cywhoyi 写道想到另一种方式1.排好序,O(NlgN),有特殊方式定好坐标,比如n[1]=1、n ...
Cwind 评论了 LeetCode[Array] - #1 Two Sum
想到另一种方式1.排好序,O(NlgN),有特殊方式定好坐标,比如n[1]=1、n[2]=2,为了避免 ...
cywhoyi 评论了 LeetCode[Array] - #1 Two Sum
Cwind 写道fly_宇光十色 写道好吊!最不懂这样的代码sum += n & 1 n = ...
fly_宇光十色 评论了 LeetCode[位运算] - #191 计算汉明权重
Global site tag (gtag.js) - Google Analytics