随笔分类 - leetcode
leetcode 160 相交链表
摘要:一:time:O(m+n) space:O(m+n) public ListNode getIntersectionNode(ListNode headA, ListNode headB) { //time O (m+n) space O(m+n) Set<Integer> set = new Ha
leetcode 394字符串解码
摘要:Stack<Character> sc = new Stack<>(); //3[a]2[bc] for(char c: s.toCharArray()){; if (c != ']') {//遇到结束符 sc.push(c); } else { StringBuilder tempC = new
字节面试做不出来的螺旋矩阵leetcode54
摘要:这是一道模拟题,模拟这个绕着边界走的过程就可以了。 第一种办法很直观,用四个变量规定好最外围那一圈的行和列的上界和下界。代码如下: List<Integer> list = new LinkedList<>(); int a = 0, b = matrix[0].length - 1, c = 0,
快速排序Java
摘要:代码 public static void quickSort(int[] arr, int start, int end) { //start和end以下标0开始为基准 if (start < end) { int k = partition(arr, start, end); quickSort
堆
摘要:一: 理论基础 y一棵二叉树共 n 个结点, 按1 —— n编号, 如果一个结点序号为 i 有左孩子, 那么左孩子序号为 2 * i, 如果有右孩子, 右孩子序号为2 * i + 1 二:三种二叉树遍历 class TreeNode { int val; TreeNode left; TreeNod
leetcode SCS 最短公共超序列
摘要:参考 Longest common subsequence 然后回溯dp[][] matrix public String shortestCommonSupersequence(String str1, String str2) { int m = str1.length(); int n = s
把一个数最右边那一位1弄出来
摘要:任何一个数取反加1之后, 第一个1至右 的位数上的数字都相同 然后再和原数 相与, 把第一个1保留, 其他变为0 int result = num & (~num+1);
leetcode-双指针旋转数组
摘要:nums = " >-->"; k =3 result = "--> >"; reverse " >-->" we can get "<--< " reverse "<--" we can get "-->< " reverse "< " we can get "--> >" this visual
双指针 leetcode 633
摘要:自己的解法为: long num = c; long l = 0; long r = c; while (l <= r){ if ((Math.pow(l, 2) + Math.pow(r, 2)) < num) {l++;continue;} if ((Math.pow(l, 2) + Math.
leecode 406
摘要:/** * 解题思路:先排序再插入 * 1.排序规则:按照先H高度降序,K个数升序排序 * 2.遍历排序后的数组,根据K插入到K的位置上 * * 核心思想:高个子先站好位,矮个子插入到K位置上,前面肯定有K个高个子,矮个子再插到前面也满足K的要求 * * @param people * @retur
贪心算法leetcode 122
摘要:首先放上自己一开始的第一个解: int start = prices[0]; int end = prices[0]; int count = 0; for (int i = 1; i < prices.length; i++) { if (prices[i] < end) {count += en
贪心算法leetcode-763
摘要:int[] lastShow = new int[26]; var list = new LinkedList<Integer>(); for (int i = 0; i < s.length(); i++) { lastShow[s.charAt(i) - 'a'] = i; } int end
贪心算法 452
摘要:自己做的比较差的答案是,对每一个元素的index0位置排序,然后计算后面的元素和前面的有没有相交,不相交了就把arrow加1 public int findMinArrowShots(int[][] points) { Arrays.sort(points, Comparator.comparing