随笔分类 -  LeetCode每日刷题

上一页 1 ··· 3 4 5 6 7 8 下一页
以medium为主
摘要:一、题目描述 ☆☆☆二、解法 【最优解】:双指针(对撞指针),时间复杂度O(n) 核心是 缩减搜索空间 class Solution { public int maxArea(int[] height) { /** * 方法1:暴力法,时间复杂度O(n^2) */ /*int res = 0; fo 阅读全文
posted @ 2020-12-07 11:38 不学无墅_NKer 阅读(84) 评论(0) 推荐(0)
摘要:一、题目描述 二、解法 思路:对撞指针 class Solution { public String reverseVowels(String s) { if (s == null || s.length() < 2) return s; char[] chars = s.toCharArray() 阅读全文
posted @ 2020-12-07 10:51 不学无墅_NKer 阅读(85) 评论(0) 推荐(0)
摘要:一、题目描述 二、解法 class Solution { public void reverseString(char[] s) { if (s == null || s.length == 0) return; int l = 0, r = s.length - 1; while (l < r) 阅读全文
posted @ 2020-12-07 10:29 不学无墅_NKer 阅读(59) 评论(0) 推荐(0)
摘要:一、题目描述 二、解法 思路1:双指针。 思路2:reverse后看是否相等。 class Solution { public boolean isPalindrome(String s) { if (s == null) return true; /** * 方法1:双指针 */ char[] c 阅读全文
posted @ 2020-12-07 10:14 不学无墅_NKer 阅读(65) 评论(0) 推荐(0)
摘要:一、题目描述 二、解法 思路1:双指针。最优解,时间复杂度为O(n) 思路2:二分搜索。 (Tips:看见 数组 + 有序,第一时间想到 二分!!) 时间复杂度:O(nlogn),其中二分的复杂度为O(logn) class Solution { public int[] twoSum(int[] 阅读全文
posted @ 2020-12-06 18:26 不学无墅_NKer 阅读(69) 评论(0) 推荐(0)
摘要:一、题目描述 ☆☆二、解法 方法1:基于快排的选择方法,即快排partition函数的应用。 Note: 针对本题来说,快排的枢纽点要随机取,否则极端测试用例,会导致退化为O(n^2) 方法2:基于堆排序的选择方法。 解法1: class Solution { public int findKthL 阅读全文
posted @ 2020-12-06 17:38 不学无墅_NKer 阅读(122) 评论(0) 推荐(0)
摘要:一、题目描述 二、解法 思路:就是归并排序的 “合并”部分。 class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { // 把nums1拷贝一份 int[] temp = new int[m]; for 阅读全文
posted @ 2020-12-06 15:08 不学无墅_NKer 阅读(64) 评论(0) 推荐(0)
摘要:一、题目描述 二、解法 思路1:计数排序。分别统计0,1,2的元素个数。 复杂度分析:时间复杂度:O(n);空间复杂度:O(k), k为元素的取值范围; 需要扫描数组两遍。 思路2:三路快排。 只需要遍历数组一遍 重点是设计循环不变量,定义zero和two的含义后,在循环中始终要维护这个定义。 cl 阅读全文
posted @ 2020-12-06 12:02 不学无墅_NKer 阅读(130) 评论(0) 推荐(0)
摘要:一、题目描述 ☆☆☆二、解法 思路:快慢指针。 class Solution { public int removeDuplicates(int[] nums) { if (nums == null || nums.length == 0) return 0; /** * 方法1 */ int in 阅读全文
posted @ 2020-12-05 17:23 不学无墅_NKer 阅读(65) 评论(0) 推荐(0)
摘要:一、题目描述 二、解法 class Solution { public int removeDuplicates(int[] nums) { if (nums == null || nums.length == 0) return 0; int index = 0; for (int i = 0; 阅读全文
posted @ 2020-12-05 12:11 不学无墅_NKer 阅读(81) 评论(0) 推荐(0)
摘要:一、题目描述 二、解法 思路1:与LeetCode283. 移动零 思路一模一样,相当于把所有等于val的值移到最后。(保持元素的顺序不变) 思路2:每遇到一个元素等于val时,将当前元素与最后一个元素交换,并释放最后一个元素。(元素顺序改变) 分析:思路2中赋值的次数等于要删除元素的数量,因此如果 阅读全文
posted @ 2020-12-05 11:27 不学无墅_NKer 阅读(113) 评论(0) 推荐(0)
摘要:一、题目描述 二、解法 class Solution { public void moveZeroes(int[] nums) { if (nums == null || nums.length == 0) return; /** * 方法1: 双指针,两次遍历 -> 把非0的往前挪,然后补0 */ 阅读全文
posted @ 2020-12-05 10:39 不学无墅_NKer 阅读(109) 评论(0) 推荐(0)
摘要:1 class Solution { 2 public int firstUniqChar(String s) { 3 4 int[] freq = new int[26]; 5 for(int i = 0; i < s.length(); i ++){ 6 freq[s.charAt(i) - ' 阅读全文
posted @ 2020-05-13 21:19 不学无墅_NKer 阅读(122) 评论(0) 推荐(0)
摘要:分析:在这个案例中,Trie是作为一种映射来使用(在Node节点中存储了一个value值)。 集合和映射的关系:映射本身就是把集合中的每一个元素当做一个键,每一键绑定一个value,绑定体现在Node中。 1 import java.util.TreeMap; 2 class MapSum { 3 阅读全文
posted @ 2020-05-10 13:24 不学无墅_NKer 阅读(241) 评论(0) 推荐(0)
摘要:分析:把Trie当做字符串的集合来使用,添加单词,查询单词是否存在 1 import java.util.TreeMap; 2 class WordDictionary { 3 private class Node{ 4 public boolean isWord; 5 public TreeMap 阅读全文
posted @ 2020-05-10 12:22 不学无墅_NKer 阅读(164) 评论(0) 推荐(0)
摘要:import java.util.TreeMap; class Trie { private class Node{ public boolean isWord; public TreeMap<Character, Node> next; public Node(boolean isWord){ t 阅读全文
posted @ 2020-05-10 09:24 不学无墅_NKer 阅读(97) 评论(0) 推荐(0)
摘要:题目描述: 分析:虽然是求区间和,但数组是不可变的,不可变 意思是 不涉及线段树更新操作。因此可以不使用线段树这种复杂的数据结构,对于该题不使用线段树效果更好,初始化是O(n)的复杂度,以后每次调用只需要O(1)的复杂度。 // 不使用线段树的解决方案 class NumArray { privat 阅读全文
posted @ 2020-05-06 23:46 不学无墅_NKer 阅读(120) 评论(0) 推荐(0)
摘要:题解分析:首先求出所有元素的频次(映射Map),然后利用频次求出前k高的元素(优先队列)。具体来说,问题转化为“在N个元素中选出前M个元素,M<<N”,最朴素的想法是采用排序,但使用快排等高级排序算法,复杂度在NlogN;更好的方法是采用优先队列,复杂度在NlogM,其思路是使用优先队列,维护当前看 阅读全文
posted @ 2020-05-05 23:36 不学无墅_NKer 阅读(217) 评论(0) 推荐(0)
摘要:分析:使用集合 class Solution { public int[] intersection(int[] nums1, int[] nums2) { Set<Integer> set = new HashSet<>(); Set<Integer> set1 = new HashSet<>() 阅读全文
posted @ 2020-05-05 12:51 不学无墅_NKer 阅读(199) 评论(0) 推荐(0)
摘要:import java.util.TreeSet; class Solution { public int uniqueMorseRepresentations(String[] words) { String[] codes = {".-","-...","-.-.","-..",".","..- 阅读全文
posted @ 2020-05-04 22:48 不学无墅_NKer 阅读(170) 评论(0) 推荐(0)

上一页 1 ··· 3 4 5 6 7 8 下一页