[LeetCode]Evaluate Reverse Polish Notation
摘要:题目:Evaluate Reverse Polish Notation 给出一个加减乘除的逆波兰式,求出它的结果; 什么是逆波兰式? 简单来说,逆波兰式就是表达式的后缀表示形式; 例如下面两个式子: ["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9 ["
阅读全文
[LeetCode]Insertion Sort List
摘要:题目:Insertion Sort List 对链表进行插入排序。 注意: 1.插入头部和插入其他位置需要区分开处理; 2.可以考虑稳定的排序; 思路: 基本的思路就是每次从原链表按顺序取一个节点将它查到已序的新链表的合适的位置。 还有链表的归并排序:http://www.cnblogs.com/y
阅读全文
[LeetCode]Sort List
摘要:题目:Sort List 对链表排序; 要求:时间复杂度O(nlogn),空间复杂度O(1) 考虑使用归并排序。 归并排序的思想:先将它划分成k各部分每个部分排好序后,再两两合并,知道所有的合并到一起,就排好序。 由于要求空间复杂度O(1),所以不能递归。 下面的实现是初始步长为2时的归并排序的情况
阅读全文
[LeetCode]Unique Binary Search TreesII
摘要:题目:Unique Binary Search TreesII 如果要列出所有可能的二叉搜索树,可以在上面的思路上进一步。 f(n) = f(0)*f(n-1) + f(1)*f(n-2) + ... + f(n-1)*f(0); 只要求出不同变量下的子树的所有情况,在整合到一起就可以了。 具体思路
阅读全文
[LeetCode]Linked List Cycle
摘要:题目:Linked List Cycle 判断一个单链表中是否有环,要求常量空间复杂度; 思路: 使用两个指针同时从链表表头开始移动,一个移动一步,一个移动两步,直到两个指针重合或某一指针指向链尾。 两个指针重合则单链表有环存在,否则没有。 第二个指针以第一个指针的两倍的速度移动,而第一个指针每次移
阅读全文
[LeetCode]Reorder List
摘要:题目:Reorder List 首尾重新结合形成新的链表; 要求:不能改变链表的元素,空间复杂度O(1) 题目意思: 将链表L0→L1→…→Ln-1→Ln重排变成L0→Ln→L1→Ln-1→L2→Ln-2→… 思路: 首先将链表分为前后两半;L0→L1→...→L(n+1)/2和L(n+1)/2 +
阅读全文
[LeetCode]Word Break
摘要:题目:Word Break 将给定的字符串按照给定的单词表拆分开,判断是否能在给定的单词表中拆分该字符串 单词表中单词不重复,但是可以在字符串中重复出现。 思路: 暴力搜索,只要遍历单词表每次找到与字符串的当前位置往后的n(单词表中当前遍历到的单词长度)的字符重合则表示可以拆分。 这种方法,时间复杂
阅读全文
[LeetCode]singleNumber
摘要:题目:singleNumber Given an array of integers, every element appears twice except for one. Find that single one. Note: Your algorithm should have a linea
阅读全文
[LeetCode]Palindrome
摘要:题目:Palindrome Number 确定一个整数是否是回文。要求没有额外的空间。 思路: 如果有首尾两个指针,则一次比较两个指针对应的数字的值,就能够知道是不是回文数字了; 但是,怎么从后往前遍历呢? 我们可以定义一个数组,分别记录个、十、百、千、万...的位数然后除以数组对应的位数就能从后往
阅读全文
[LeetCode]Restore IP Addresses
摘要:题目:Restore IP Addresses 将数字串转换成合法的IP地址,返回所有可能的情况。 思路: 移动3个地址分隔符".",将地址换分成四份,检查是否合法; 注意不能有0开头的地址段(它是非法的),且不用将开头的0去掉。 中间的点从第一个点的后面开始向尾部移动,当第一个点与第二个点的距离大
阅读全文
[LeetCode]Maximal Rectangle
摘要:题目:Maximal Rectangle 找到最大的全1矩阵。 思路: 要求上面的解,先看下面的问题: 一个数组A[]={5,6,7,8,3};对应如下的直方图,求他的最大矩形的面积。 普通的思路,就是循环遍历,i=0~a.length-1; 然后里面从j=i~a.length-1,在最里层循环中,
阅读全文
[LeetCode]Reverse Linked List II
摘要:题目:Reverse Linked List II 逆置链表m到n的之间的节点。 能用递归就能用栈来实现, 用栈来逆置链表,做法如下: 直接用循环来逆置链表: 1->2->3->4->5; (m,n)=(2,4); p=2;pre=1;end=4; q=5; 1)temp=p; 2)temp->ne
阅读全文
[LeetCode]Decode Ways
摘要:题目:Decode Ways 将一串数字序列翻译成字母序列,找到可以翻译的种数。 思路: 数值小于2就有可能有不同的组合,其中1和2要分别处理 1的话一定可以有两种组合,2和要看后面一个数是否小于6.
阅读全文
[LeetCode]Partition List
摘要:题目:Partition List 给定一个链表和数值x,保证小于该数值x的都在他左边,其他的相对位置不能改变。 思路: 遍历一边链表,小于x的节点连在一起,其他的连在一起,不改变他们的顺序在首尾相连就可以了。
阅读全文
[LeetCode]Remove Duplicates from Sorted Array
摘要:题目:Remove Duplicates from Sorted Array 删除数组中重复元素。 题目:Remove Duplicates from Sorted ArrayII 保证数组中同一元素重复次数不超过2次。 题目:Remove Duplicates from Sorted List I
阅读全文
[LeetCode]Word Search
摘要:题目:Word Search 判断某一单词是否在一个字母数组中用一条折线连起来。 word = "ABCCED", -> returns true, 坐标序列如下:00,01,02,12,22,21 思路: 递归查找单词当前字母对应数组的坐标的前后左右,看能都匹配。
阅读全文
[LeetCode] Combinations
摘要:题目: Combinations 1-n个数字中找k个数字的所有不同组合。 思路:从1-k开始,每次从k开始,让最后面的元素加1,超过了,就让前面一个元素加1,后面一个元素变为前面一个元素的值加1. 循环知道所有元素都没有超过,则是一种不同的情况。 例如:n = 6,k = 4; 1234->123
阅读全文
[LeetCode]Sort Colors
摘要:题目:Sort Colors 一个一维数组只有三个元素要把它排序。 思路1:快速排序。 后面专门总结这个排序算法。 思路2:计数排序。 例如:2 5 3 0 2 3 0 3的数组,先申请长度为6的数组,初始值为0. 然后统计其中0-5的每个数字的个数, 在按照大小顺序输出每个数字统计的次数,即排好序
阅读全文
[LeetCode]Search a 2D Matrix
摘要:题目:Search a 2D Matrix 数组下一行最小值比上一行最大值大,且每一行递增排列。 确定数组中是否存在给定的值。 思路: 二维空间中的折半查找。 题目:Search a 2D MatrixII 给定一个二维数组,数组满足下面要求:每行中的整数按从左到右的顺序进行排序;每列中的整数按照从
阅读全文
[LeetCode]Set Matrix Zeroes
摘要:题目:Set Matrix Zeroes 如果某一行或某一列有一个是0则该行该列全部都复位零。 思路1: 数组Amxn 创建该数组行数m和列数n的数组,用其标记行和列为零的位置,在一起复位零,这样,就不会被复位后的零所影响。 但是题目说有空间复杂度O(1)的方法。 思路2: 用已有的数组中的第一行和
阅读全文