Leetcode
文章平均质量分 64
youmenderizi
这个作者很懒,什么都没留下…
展开
-
345. Reverse Vowels of a String
题目描述:将字符串中的元音进行颠倒 解题思路:使用两个List记录元音及其位置,然后颠倒即可 重点:char[] 转化为string public class Solution { public string ReverseVowels(string s) { List vowels = new List(); List po原创 2016-05-11 15:36:33 · 204 阅读 · 0 评论 -
71. Simplify Path
题目描述:对Unix-style的路径进行简化,得到简化的路径 难点:不知道如何简化,要多试用例 解题的思路:对string遍历,./表示当前路径,../表示退回上级目录,///归纳为1个,....等直接复制。还有就是对路径末尾进行处理,不包括/ public class Solution { public string SimplifyPath(string path)原创 2016-05-17 16:50:33 · 278 阅读 · 0 评论 -
39. Combination Sum
问题描述:给定一个数组A和一个数字n,要求在A中找出所有的可能组合,使得他们的和等于n,A中的数字可以重复使用 解题思路:可以从大往小找。将数组从大到小排序,对于每一个数x,如果它等于n,则返回;如果小于n,先加入列表中,计算n-x,然后从小于等于x的数中找出小于n-x的,将每个数加入到列表中,继续找下一个数;如果找不到这样的数,那么路径错误;如果到最后可以得到剩下的数等于0,说明这条路径可行。原创 2016-05-12 14:58:27 · 240 阅读 · 0 评论 -
60. Permutation Sequence
问题描述:给定一个整数n和整数k,按字典序给出第k个1~n的全排列 解题思路:n!=n*(n-1)!,按字典序排序,也就是说(n-1)!个全排列的第一个数是相同的,以此类推。通过k/(n-1)!确定它在哪个组,确定第一个数,以此类推 public class Solution { public string GetPermutation(int n, int k) {原创 2016-05-12 11:51:05 · 256 阅读 · 0 评论 -
31. Next Permutation
题目描述:按字典序输出下一个排列 解题思路:应该从后往前考虑,如果整个数组从大到小排好序,那么对此数组进行倒转后输出;遇到第一个比之后的数字小的数,应该在之后的数里面选取一个大于它的最小值放在这个位置,然后对右边的数排序 public class Solution { public void NextPermutation(int[] nums) {原创 2016-05-12 11:00:01 · 235 阅读 · 0 评论 -
230. Kth Smallest Element in a BST
这道题太简单了,利用BST的性质即可,不说了。 /** * Definition for a binary tree node. * public class TreeNode { * public int val; * public TreeNode left; * public TreeNode right; * public Tree原创 2016-05-12 10:17:43 · 192 阅读 · 0 评论 -
47. Permutations II
题目描述:给定一个数组,输出它的全排列,数组中可能存在相同的数 解题思路:一开始的想法是先输出全排列,然后去掉其中的重复项,全排列的输出根据将一个数插在前面所有数形成的所有排列的不同位置上得到,发现有重复项,因此应该对排列排序后再加入新的数。但是这种方法耗费时间太长。看了tags之后发现使用回溯的方法进行剪枝,那就是在形成新的排列的时候查看列表中是否已存在此项,已存在就不再加入,这样就不需要最后原创 2016-05-12 10:14:34 · 233 阅读 · 0 评论 -
315. Count of Smaller Numbers After Self
题目描述:给定数组,计算每个元素的右边有多少元素小于它 解题思路:使用BST算法,那么就是每个元素被插入时右转经过的元素的左子树元素的个数之和 重点: public class Solution { class Node { private int val; private Node lchild;原创 2016-05-11 15:49:46 · 288 阅读 · 0 评论 -
338. Counting Bits
题目描述:给定一个整数n,计算0到n每个数的二进制表示中1的个数 解题思路:可以使用动态规划。一个整数可以看做离它最近的二次幂加上另一个数 重点:2次幂为0,1为1,以此类推 public class Solution { public int[] CountBits(int num) { int[] bits = new int[num + 1];原创 2016-05-11 15:46:22 · 258 阅读 · 0 评论 -
343. Integer Break
题目描述:给定一个整数,将其做为n个部分的和,每一部分均为大于0的整数,使得这n个整数的积最大 解题思路: 对于一个整数,如果将其分为k个部分,则当这k个部分最相近时,它们的积最大。 重点:将n%k分配给n%k个项,使每项加1,就可以使各项最接近 public class Solution { public int IntegerBreak(int n) {原创 2016-05-11 15:41:59 · 247 阅读 · 0 评论 -
304. Range Sum Query 2D - Immutable
题目描述:Given a 2D matrix matrix, find the sum of the elements inside the rectangle defined by its upper left corner (row1, col1) and lower right corner (row2, col2). The above rectangle (with the red b原创 2016-05-17 16:56:50 · 257 阅读 · 0 评论