<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[jsh0123的博客]]></title><description><![CDATA[程序狗&&中国科学院计算技术研究所在读学生]]></description><link>https://blog.youkuaiyun.com/jsh0123</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; jsh0123]]></copyright><item><title><![CDATA[[LeetCode]Minimum Time Difference(java)]]></title><link>https://blog.youkuaiyun.com/jsh0123/article/details/67644955</link><guid>https://blog.youkuaiyun.com/jsh0123/article/details/67644955</guid><author>jsh0123</author><pubDate>Tue, 28 Mar 2017 20:51:56 +0800</pubDate><description><![CDATA[我用set去重无重复则循环计算差值，而discuss则考虑用分钟hash
贴一个我的答案
public class Solution {
    public int findMinDifference(List timePoints) {
        int result = Integer.MAX_VALUE;
        Set set = new HashSet(timePoi]]></description><category></category></item><item><title><![CDATA[[LeetCode]Continuous Subarray Sum]]></title><link>https://blog.youkuaiyun.com/jsh0123/article/details/64942789</link><guid>https://blog.youkuaiyun.com/jsh0123/article/details/64942789</guid><author>jsh0123</author><pubDate>Wed, 22 Mar 2017 21:27:34 +0800</pubDate><description><![CDATA[同样是动态规划的思想，性能最好的用补码轮询的方法做的，效率极高，代码如下
public boolean checkSubarraySum(int[] nums, int k) {
    Map map = new HashMap(){{put(0,-1);}};;
    int runningSum = 0;
    for (int i=0;i<nums.length;i++) {
   ]]></description><category></category></item><item><title><![CDATA[[LeetCode]Partition Equal Subset Sum(Java)]]></title><link>https://blog.youkuaiyun.com/jsh0123/article/details/64520571</link><guid>https://blog.youkuaiyun.com/jsh0123/article/details/64520571</guid><author>jsh0123</author><pubDate>Tue, 21 Mar 2017 21:28:05 +0800</pubDate><description><![CDATA[又是一道穷举改动态规划的题，根据今天的面试结果我决心把动态规划练得炉火纯青！
public class Solution {
    public boolean canPartition(int[] nums) {
        // check edge case
        if (nums == null || nums.length == 0) {
            ret]]></description><category></category></item><item><title><![CDATA[【LeetCode】Coin Change(Java)]]></title><link>https://blog.youkuaiyun.com/jsh0123/article/details/62898948</link><guid>https://blog.youkuaiyun.com/jsh0123/article/details/62898948</guid><author>jsh0123</author><pubDate>Fri, 17 Mar 2017 21:10:09 +0800</pubDate><description><![CDATA[换钱币这道题我一开始用回溯法解题，导致超时，后看到提示，改用动态规划解
这个是动态规划写的答案
public class Solution {
    int min = -1;
    public int coinChange(int[] coins, int amount) {
        if(amount == 0)
            return 0;
    ]]></description><category></category></item><item><title><![CDATA[[LeetCode]First Missing Positive(Java)]]></title><link>https://blog.youkuaiyun.com/jsh0123/article/details/62442947</link><guid>https://blog.youkuaiyun.com/jsh0123/article/details/62442947</guid><author>jsh0123</author><pubDate>Thu, 16 Mar 2017 21:05:41 +0800</pubDate><description><![CDATA[利用位置互换的思想很有趣比我用哈希表存的剩空间，仍需仔细研究研究public class Solution {
    public int firstMissingPositive(int[] A) {
        int i = 0;
        while(i < A.length){
            if(A[i] == i+1 || A[i]  A.length) i++]]></description><category></category></item><item><title><![CDATA[[LeetCode]Find Right Interval(Java)]]></title><link>https://blog.youkuaiyun.com/jsh0123/article/details/61926520</link><guid>https://blog.youkuaiyun.com/jsh0123/article/details/61926520</guid><author>jsh0123</author><pubDate>Mon, 13 Mar 2017 20:26:48 +0800</pubDate><description><![CDATA[这道题又涨姿势了，treemap自带接口方法lowerEntry、floorEntry、ceilingEntry和higherEntry分别返回与小于、小于等于、大于等于、大于给定键的键关联的Map.Entry对象，如果不存在这样的键，则返回null。类似地，方法lowerKey、floorKey、ceilingKey和higherKey只返回关联的键。public class Solution ]]></description><category></category></item><item><title><![CDATA[【LeetCode】Merge k Sorted Lists(java)]]></title><link>https://blog.youkuaiyun.com/jsh0123/article/details/60597245</link><guid>https://blog.youkuaiyun.com/jsh0123/article/details/60597245</guid><author>jsh0123</author><pubDate>Mon, 06 Mar 2017 21:17:33 +0800</pubDate><description><![CDATA[我的方法就是暴力求解，时间复杂度为O(n2);
public class Solution {
    public ListNode mergeKLists(ListNode[] lists) {
        if(lists.length == 0)
            return null;
        ListNode result = new ListNode(-1),p]]></description><category></category></item><item><title><![CDATA[[LeetCode]Longest Increasing Path in a Matrix(Java)]]></title><link>https://blog.youkuaiyun.com/jsh0123/article/details/60470505</link><guid>https://blog.youkuaiyun.com/jsh0123/article/details/60470505</guid><author>jsh0123</author><pubDate>Sun, 05 Mar 2017 19:28:45 +0800</pubDate><description><![CDATA[这道题我用最容易想的想法就是回溯法计算分别延四个方向计算，结果时间复杂度为O(n5),结果导致时间过长
代码如下
public class Solution {
    int max = 0;
    public int longestIncreasingPath(int[][] matrix) {
        for(int i = 0;i <matrix.length;i++){
]]></description><category></category></item><item><title><![CDATA[[LeetCode]Total Hamming Distance(Java)]]></title><link>https://blog.youkuaiyun.com/jsh0123/article/details/60115072</link><guid>https://blog.youkuaiyun.com/jsh0123/article/details/60115072</guid><author>jsh0123</author><pubDate>Fri, 03 Mar 2017 09:21:23 +0800</pubDate><description><![CDATA[这道题计算数组中所有元素的汉明距离
我的解法很常规。结果超时，时间O(n2)
这是我的答案
public class Solution {
    public int totalHammingDistance(int[] nums) {
        int result = 0;
        for(int i = 0;i < nums.length;i++){
         ]]></description><category></category></item><item><title><![CDATA[[LeetCode]  Longest Palindromic Substring(java)]]></title><link>https://blog.youkuaiyun.com/jsh0123/article/details/57426404</link><guid>https://blog.youkuaiyun.com/jsh0123/article/details/57426404</guid><author>jsh0123</author><pubDate>Sun, 26 Feb 2017 19:08:46 +0800</pubDate><description><![CDATA[我的想法很常规，常规的动态规划的思想
public class Solution {
    public String longestPalindrome(String s) {
        if(s.length() < 2 )
            return s;
        int max = 0,len = s.length();
        char[] sChar]]></description><category></category></item><item><title><![CDATA[[LeetCode]Submission Details]]></title><link>https://blog.youkuaiyun.com/jsh0123/article/details/56682257</link><guid>https://blog.youkuaiyun.com/jsh0123/article/details/56682257</guid><author>jsh0123</author><pubDate>Thu, 23 Feb 2017 21:50:18 +0800</pubDate><description><![CDATA[我的答案暴力解
答案用的是O(n)
贴个答案
public class Solution {
    public int maxArea(int[] height) {
        int max = 0;
        for(int i = 0; i< height.length - 1;i++){
            for(int j = i+1; j<height.le]]></description><category></category></item><item><title><![CDATA[[LeetCode] Submission Details(Java) 高票答案边界值对否？]]></title><link>https://blog.youkuaiyun.com/jsh0123/article/details/56680051</link><guid>https://blog.youkuaiyun.com/jsh0123/article/details/56680051</guid><author>jsh0123</author><pubDate>Thu, 23 Feb 2017 20:42:57 +0800</pubDate><description><![CDATA[同样是层次遍历的解法，但是我的空间负责度较高，明明有next指针可以利用next做层次遍历
先贴我自己的代码
public class Solution {
    public void connect(TreeLinkNode root) {
        List> tree = new ArrayList>();
        if(root != null)
          ]]></description><category></category></item><item><title><![CDATA[[LeetCode] Count Primes(Java)]]></title><link>https://blog.youkuaiyun.com/jsh0123/article/details/56496334</link><guid>https://blog.youkuaiyun.com/jsh0123/article/details/56496334</guid><author>jsh0123</author><pubDate>Wed, 22 Feb 2017 20:35:26 +0800</pubDate><description><![CDATA[计算素数的个数我的想法中规中矩，就是暴力解法，贴一个答案解法，hash思想
public class Solution {
    public int countPrimes(int n) {
        boolean[] notPrime = new boolean[n];
        int count = 0;
        for (int i = 2; i < n; i+]]></description><category></category></item><item><title><![CDATA[[LeetCode]Maximum Product of Word Lengths(Java)]]></title><link>https://blog.youkuaiyun.com/jsh0123/article/details/54138096</link><guid>https://blog.youkuaiyun.com/jsh0123/article/details/54138096</guid><author>jsh0123</author><pubDate>Fri, 06 Jan 2017 14:58:16 +0800</pubDate><description><![CDATA[我自己用暴力解法发现不能通过，其中有一个测试用例使用的单个字符串非常长
我的代码如下
public class Solution {
    public int maxProduct(String[] words) {
        int max = 0;
        Arrays.sort(words, new Comparator(){
            public in]]></description><category></category></item><item><title><![CDATA[[LeetCode] Sort Characters By Frequency(Java)]]></title><link>https://blog.youkuaiyun.com/jsh0123/article/details/53888649</link><guid>https://blog.youkuaiyun.com/jsh0123/article/details/53888649</guid><author>jsh0123</author><pubDate>Mon, 26 Dec 2016 19:29:44 +0800</pubDate><description><![CDATA[我的思想是list数组按顺序构造，讨论中高票使用数组实现，效果更好
我的代码
public class Solution {
    public String frequencySort(String s) {
        int length = s.length();
        List[] sortList = new LinkedList[length+1];
      ]]></description><category></category></item><item><title><![CDATA[[LeetCode]Top K Frequent Elements(Java)]]></title><link>https://blog.youkuaiyun.com/jsh0123/article/details/53821205</link><guid>https://blog.youkuaiyun.com/jsh0123/article/details/53821205</guid><author>jsh0123</author><pubDate>Thu, 22 Dec 2016 21:59:05 +0800</pubDate><description><![CDATA[记一种别人写的代码，和我的代码
我的代码如下：
public class Solution {
    public List topKFrequent(int[] nums, int k) {
        int length = nums.length;
        List result = new ArrayList();
        Map hash = new Hash]]></description><category></category></item><item><title><![CDATA[[LeetCode]Find All Numbers Disappeared in an Array(Java)]]></title><link>https://blog.youkuaiyun.com/jsh0123/article/details/53769423</link><guid>https://blog.youkuaiyun.com/jsh0123/article/details/53769423</guid><author>jsh0123</author><pubDate>Tue, 20 Dec 2016 21:19:02 +0800</pubDate><description><![CDATA[这道题我的解法比较单一，采用hash数组的方法，discuss高票的方法采用标记负数的方法，对出现数对应的位置则表记为负数。


我的答案
public class Solution {
    public List findDisappearedNumbers(int[] nums) {
        int length = nums.length;
        int[] h]]></description><category></category></item><item><title><![CDATA[[LeetCode]Repeated Substring Pattern(Java)]]></title><link>https://blog.youkuaiyun.com/jsh0123/article/details/53673225</link><guid>https://blog.youkuaiyun.com/jsh0123/article/details/53673225</guid><author>jsh0123</author><pubDate>Thu, 15 Dec 2016 17:29:04 +0800</pubDate><description><![CDATA[这道题我的方法太暴力，人家解得巧妙不已，我的方法如下：
public class Solution {
    public boolean repeatedSubstringPattern(String str) {
        int length = str.length() / 2 +1;
        for(int i = 1;i<length;i++){
          ]]></description><category></category></item><item><title><![CDATA[[LeetCode]Minimum Moves to Equal Array Elements II(Java)]]></title><link>https://blog.youkuaiyun.com/jsh0123/article/details/53671471</link><guid>https://blog.youkuaiyun.com/jsh0123/article/details/53671471</guid><author>jsh0123</author><pubDate>Thu, 15 Dec 2016 15:56:17 +0800</pubDate><description><![CDATA[这道题暴力解，二分查找都不对，只能采取先排序，按排序得到结果从小到大依次按当前尝试值和之前尝试值得之差分别计算比当前值小和比当前值大的数的个数计算。
上代码：
public class Solution {
    public int minMoves2(int[] nums) {
        int length = nums.length;
        Arrays.sort(n]]></description><category></category></item><item><title><![CDATA[[LeetCode]Minimum Moves to Equal Array Elements(Java)]]></title><link>https://blog.youkuaiyun.com/jsh0123/article/details/53424062</link><guid>https://blog.youkuaiyun.com/jsh0123/article/details/53424062</guid><author>jsh0123</author><pubDate>Thu, 01 Dec 2016 17:30:48 +0800</pubDate><description><![CDATA[这道题经过暴力模拟解题发现时间复杂度巨高，然后改为求min与所有数组元素求差的和，代码如下：
public class Solution {
    public int minMoves(int[] nums) {
        int length = nums.length;
        int steps = 0,gap = 0;

        //int max = Inte]]></description><category></category></item></channel></rss>