上一页 1 ··· 4 5 6 7 8 9 下一页
摘要: 利用哈希表的键值对属性和堆的先进后出属性, 先将括号建立键值对,然后迭代时遇到键值对内元素 则弹出,否则继续压入堆内。迭代完毕后,若堆内不为空则无效,反之则有效。 时间O(n),空间O(n)(本题的map内键值对是固定的3组,所以空间是固定的,可以忽略不计) public boolean isVal 阅读全文
posted @ 2021-03-29 10:28 jchen104 阅读(46) 评论(0) 推荐(0)
摘要: 根据题意,异位词的意思为2个字符串中相同元素出现相同次数 2次迭代,第一次迭代计算每个元素出现的次数,每次+1 第二次迭代将每个元素,每次-1,。第二次迭代完成以后, 若异位词成立,则每个key对应的value都应该为0,否则便不成立。 时间O(n),空间O(m),m为2个字符串s和t的离散度 pu 阅读全文
posted @ 2021-03-29 10:23 jchen104 阅读(64) 评论(0) 推荐(0)
摘要: 利用hashmap的key唯一属性来实现,迭代一遍, 以迭代到的字符为key,计算字符出现的次数。 第二次迭代的时候判断该字符是否只出现了一次。 时间O(n),空间O(m),m为字符串s内元素的离散程度,比如 s的范围是26个小写字母,m就是26 public int firstUniqChar(S 阅读全文
posted @ 2021-03-29 10:18 jchen104 阅读(46) 评论(0) 推荐(0)
摘要: 复习下计算机基础《数字逻辑》的内容,异或运算 1^0=1,1^1=0,(1)两个相同元素异或结果为0,(2)0和任意元素异或结果为该元素本身 由题意得出,将0依次和数组内每个元素异或运算一次后可以得出正确结果 时间O(n),空间O(1) public int singleNumber(int[] n 阅读全文
posted @ 2021-03-29 09:58 jchen104 阅读(44) 评论(0) 推荐(0)
摘要: 假设首元素即为结果,那么其必然再后续所有字符串中完整出现。 进行迭代,两两比较,遇到不同元素则表示截至当前元素得最长公共前缀已得出 时间O(m*n)(m为每个元素平均长度,n为元素个数),空间O(1) public String longestCommonPrefix(String[] strs) 阅读全文
posted @ 2021-03-26 14:57 jchen104 阅读(64) 评论(0) 推荐(0)
摘要: 傻傻的想了半天,看了题解才想起来高斯求和,真的巧妙。 高斯求和,高中数列得知识,等差数列之和=(首项+尾项)*项数/2 根据题意可得只少一个元素,那么先算出和然后再迭代一次减去所有元素即可 时间O(n),空间O(1) public int missingNumber(int[] nums) { in 阅读全文
posted @ 2021-03-26 14:50 jchen104 阅读(39) 评论(0) 推荐(0)
摘要: 投票法可解,思路如下: 假设第一个元素为多数,那么每次遇到相同元素+1,不同元素-1,迭代一遍之后必然有count>0(题目中多数得定义为出现次数大于1/2) 但是这个时候有一个问题,就是假设第一个元素不是多数,或者虽然是多数,但是在左侧某一段内非多数比如[2,1,1,2,2]在前三个 元素时2就是 阅读全文
posted @ 2021-03-26 14:42 jchen104 阅读(59) 评论(0) 推荐(0)
摘要: 题目要求在原数组上进行操作,于是又想到了双指针迭代的办法,维护一个快指针一个慢指针(参考283. 移动零), 每次快指针遇到与慢指针不同的元素则进行覆盖慢指针指向的下一元素(这里跟移动零有一点区别,因为这里是找 不通的元素,当前元素是不覆盖的)。时间O(n),空间O(1) public int re 阅读全文
posted @ 2021-03-26 14:04 jchen104 阅读(68) 评论(0) 推荐(0)
摘要: 双指针,类似弗洛伊德算法的办法,依次向后递推,每次快指针遇到不为0的 数就覆盖慢指针指向的下标,当快指针指向末尾,非0数就没有了,这个时候再 将慢指针截至末尾的数全部用0覆盖即可。这里在做了一点优化,利用for循环自身 的属性替代了快指针,我们只用维护一个慢指针就行了。 时间O(n),空间O(1) 阅读全文
posted @ 2021-03-26 13:07 jchen104 阅读(51) 评论(0) 推荐(0)
摘要: 很简单的迭代,时间O(n),空间O(1) public int maxProfit(int[] prices) { // 记录一个最小值,每次遇到更小的值就迭代掉, // 同时每次循环都判断一下是否可以获得最大收益 int minPrice=Integer.MAX_VALUE,res=0; for( 阅读全文
posted @ 2021-03-26 10:43 jchen104 阅读(39) 评论(0) 推荐(0)
上一页 1 ··· 4 5 6 7 8 9 下一页