[LeetCode]ZigZag Conversion
摘要:题目:ZigZag Conversion 一串字符按照Z字形的数组给了我们,要求转成原本的顺序。 思路: 统计“|/”的个数; 竖着的和斜着的下标有对应关系; 竖着的:k = j*(2*numRows - 2) + i; 斜着的(不含两个端点):k = (j + 1)*(2*numRows - 2)
阅读全文
[LeetCode]Swap Nodes in Pairs
摘要:题目:Swap Nodes in Pairs 交换相邻的两个节点。 思路: 两个指针指向相邻的两个节点,交换他们。 注意: 链表节点少于2个直接返回。 1->2->3->4->5->6 p:2,q:3; 交换3,4的顺序: p->next = q->next; p = p->next; q->nex
阅读全文
[LeetCode]Spiral Matrix
摘要:题目:Spiral Matrix 螺旋输出一个数组。 思路: 螺旋的方式遍历这个数组,一次外循环,遍历数组一圈,直到全部遍历完。 题目:Spiral MatrixII 给定一个数字n,则有n^2个数字,螺旋的形式将这些数字分布到n单元的数组中。 思路: 和上面类似一圈为一个周期,但是这个数组是nxn
阅读全文
[LeetCode]Search in Rotated Sorted Array
摘要:题目:Search in Rotated Sorted Array 给定一个升序但绕某一个值旋转的数组,找到给定的目标值的下标,没找到返回-1. 思路: 第一个值和最后一个值是旋转后被分成的两个升序数组的临界值,第一个值是较大的数组的最小值,最后一个值是较小的数组的最大值。 判断target在哪个数
阅读全文
[LeetCode]Rotate Image
摘要:题目:Rotate Image 旋转一个NxN的矩阵90度 要求常数空间复杂度。 思路: 从最外围开始,将第一行转到最后一列,最后一列转到最后一行,最后一行转到第一列,这是一个周期。 然后分别考虑上面周期中每个数的坐标对应关系。 例如:An*n: a00 a01 a02 a03 a10 a11 a1
阅读全文
[LeetCode]Remove Nth Node From End of List
摘要:题目:Remove Nth Node From End of List 删除链表从尾部到头部第N的节点。 思路: 两个指针,一个从头开始前移N个节点后,第二个指针开始移动,当第一指针移动到末尾时,第二个指针指向的是从尾部到头部的第N个节点。 注意: 1.N不合法,大于链表长度 2.要删除的是头结点
阅读全文
[LeetCode]Permutation
摘要:给定一系列数字,关于从小到大的所有可能的排列的相关题目 题目1.next Permutation 给定一个数字,找到这一系列数字中从小到大排序中该数字的下一个数字值。 思路: 按位从后往前(从个位开始往上)找到给的数字的首个非增序的数字; 然后继续从前往后找到比该数字大且最接近它的数字,交换这两个数
阅读全文
[LeetCode]Merge Intervals
摘要:题目:Merge Intervals 给定n个区间合并重合区间 思路: 先按照区间起点排序,然后合并下面情况: 1.起点相同,以最大的终点为新的终点; 2.前一个终点大于后一个的起点。
阅读全文
[LeetCode]Container With Most Water
摘要:题目:Container With Most Water 给定一个int数组,找到两个值,以其下标的差为宽度,最短高度为高度求面积。 思路: 定义两个指针,一个从前往后,一个从后往前; 每次固定前面的指针,后面的遍历一遍找到最大的面积(和前面的循环结果比较)记录下来。 还有复杂度O(n)的做法。 同
阅读全文
[LeetCode]Longest Palindromic Substring
摘要:题目:Longest Palindromic Substring 查找最长回文子串 思路: 一个指针从头部,一个指针从尾部,对比每一个字母,若相等则可能是回文子串,则,检测子串是否回文,是则比较和已知的子串长度,更长就记录其起始和终止坐标,否则就放弃。 上面的思路是从两边向中间收束,另一个思路是从中
阅读全文
[LeetCode]Letter Combinations of a Phone Number
摘要:题目:Letter Combinations of a Phone Number 将电话号码的组合转换称所有可能的字母组合。 思路: 首先将电话键盘中的0->9的数字对应的字母集合放到一个常量二维数组中便于搜索。 [ [' ']//0 []//1 ['a','b','c']//2 ... ['w',
阅读全文
[LeetCode]Valid Sudoku
摘要:题目:Valid Sudoku 检测数独是否合格。 思路: 填充一遍就知道是否合格。 基本暴力搜索的思想。 思路2: 题目并没有要求数独必须是能解出来的,所以没有必要这么复杂的去判断。 只需要判断给出的数字中有没有重复的。
阅读全文
[LeetCode]Integer to Roman
摘要:题目:Integer to Roman int型数字转化为罗马数字的形式 思路: 由于只是1到3999,一共只有四位,分别求这四位的情况。 可以将每一位从1到9,int和罗马数字的一一对应的关系给出来,然后直接转换。 上面思路代码冗余,不好。 思路2: 考虑每位对应数字是多少就先填多少个对应的罗马数
阅读全文
[LeetCode]Group Anagrams
摘要:题目:Group Anagrams 将字符串数组分组,变位词组为一组 变位词:单词的字母相同位置不同 思路1: 暴力搜索,比较每个单词。 思路2: 排序,我讲每个单词的字母之和作为值去比较,排序; 同时排序时把变位词放在一起,保证相邻的单词必定为变位词
阅读全文
[LeetCode]Generate Parentheses
摘要:题目:Generate Parentheses 要找到所有可能的括号配对情况。 思路: 递归求解,记录当前已添加到字符串中的左括号个数, 每次判断当前是否可用左括号和右括号,都可以则将现有的字符串复制一份,表示增加一种情况。 当左括号已用完,则只能添加右括号。 当所有左括号都已配对且还有剩余括号时,
阅读全文
[LeetCode]String to Integer (atoi)
摘要:题目:String to Integer 这个问题只要考对一个问题思考的是否全面。 思路很简单: 遍历字符串将其一一转成数字,前面转化的数字乘10再加上后面转化的数字。 注意: 1.跳过前面的空格,注意不用跳过数字中间的空格。 2.考虑正负号在数字前面的情况。 2.考虑数字值过大超过int的范围的情
阅读全文
[LeetCode]sum合集
摘要:LeetCode很喜欢sum,里面sum题一堆。 1.Two Sum Given an array of integers, return indices of the two numbers such that they add up to a specific target. You may a
阅读全文
[LeetCode]Jump Game
摘要:题目:Jump Game 以数组下标为表示,数组的值为可前进范围,判断是否能到数组的最后。 这个问题非常简单,将下标和数组值加起来,找到大于数组长度的值为止,此时,是可以;如果找不到,就表示不可以。 自己考虑了一下,如果要求正好到数组的末尾才算能够到达,没个数组的值不再是范围内的下标都可以,而是必须
阅读全文
[LeetCode]Add Two Numbers
摘要:题目:Add Two Numbers 链表的数据对应位置相加,之和组成新的链表,已经说过是非负的值。 题目不难,注意链表的操作。 本人觉得平时练习有时间,即便题目说链表不为空,我们也应该判断一下,养成良好的习惯很重要。 说一下注意点: 1.主要考虑进位 2.注意可能链表不一样长 3.注意不要忘记了最
阅读全文
[LeetCode]Longest Substring Without Repeating Characters
摘要:题目:Longest Substring Without Repeating Characters 遇到本题时,我最开始没有考虑特殊字符,以为只有字母,结果程序一直通不过。 下面是没有考虑特殊字符的程序,注意并没有通过! 因为我在里面把数组做成了环,同时也是提醒自己,所以也把代码贴在这里。(main
阅读全文