![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
看风儿
这个作者很懒,什么都没留下…
展开
-
每日算法题:19.8.26
题目:给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。示例:输入: [1,2,2]输出:[[2],[1],[1,2,2],[2,2],[1,2],[]]代码:public class Test31 { public List<List<Integer>> subsetsWithDup(int[] nums){...原创 2019-08-26 18:09:58 · 189 阅读 · 0 评论 -
每日算法题:19.7.22
题目:给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。示例:输入:candidates = [10,1,2,7,6,1,5], target = 8输出:[[1, 7],[1, 2, 5],[2, 6],[1, 1, 6]]代...原创 2019-07-22 22:45:46 · 101 阅读 · 0 评论 -
每日算法题:19.7.25
题目:给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字 1 和 0。示例:输入: a = "1010", b = "1011"输出: "10101"代码:public class Test17 { public String addBinary(String a, String b) { char[] temp1...原创 2019-07-25 23:56:00 · 115 阅读 · 0 评论 -
每日算法题:19.7.30
题目:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6代码:public class Test19 { public int maxSubArray(int[] nums) { int max = nums[0]; ...原创 2019-07-30 22:35:53 · 98 阅读 · 0 评论 -
每日算法题:19.7.21
题目:给定一个无重复元素的数组candidates和一个目标数target,找出candidates中所有可以使数字和为target的组合。candidates中的数字可以无限制重复被选取。示例:输入:candidates = [2,3,6,7], target = 7输出:[[7],[2,2,3]]代码:public class Test16 { ...原创 2019-07-21 14:26:53 · 166 阅读 · 0 评论 -
每日算法题:19.7.29
题目:给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: ["eat", "tea", "tan", "ate", "nat", "bat"]输出:[ ["ate","eat","tea"], ["nat","tan"], ["bat"]]代码:public class Test18 { @Test...原创 2019-07-29 23:48:55 · 146 阅读 · 0 评论 -
每日算法题:19.7.24
题目:给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[[1,1,2],[1,2,1],[2,1,1]]代码:public class Test16 { public List<List<Integer>> permuteUnique(int[] nums) { List<Li...原创 2019-07-24 23:11:49 · 114 阅读 · 0 评论 -
每日算法题:19.7.23
题目:给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]代码:public class Test15 { public List<List<Integer>> permute(int[] nums) { ...原创 2019-07-23 22:56:48 · 88 阅读 · 0 评论 -
每日算法题:19.7.16
题目:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。示例:输入: [1,3,5,6], 5输出: 2代码:public class Test11 { public int searchInsert(int[] nums, int target) { int i = 0; ...原创 2019-07-16 22:26:03 · 91 阅读 · 0 评论 -
每日算法题:19.7.18
题目:报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:1. 12. 113. 214. 12115. 111221示例:输入: 4输出: "1211"代码:public class Test13 { @Test public void test(){ Syst...原创 2019-07-18 22:51:08 · 108 阅读 · 0 评论 -
每日算法题:19.7.7
题目:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4代码:public class Test13 { public class ListNode { int val;...原创 2019-07-07 13:48:08 · 114 阅读 · 0 评论 -
每日算法题:19.7.6
题目:题目:给定一个只包括 '(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例:示例:输入: "([)]"输出: false代码:public class Test12 { @Test public void test(){ ...原创 2019-07-07 13:23:59 · 106 阅读 · 0 评论 -
每日算法题:19.7.11
题目:给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例:输入:给定 nums = [3,2,2,3], val = 3输出:函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2代码:public cl...原创 2019-07-11 23:09:21 · 124 阅读 · 0 评论 -
每日算法题:19.7.15
题目:给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。示例:输入: [1,2,3]输出: [1,2,4]代码:public class Test10 { public int[] plusOne(int[] digits) { int i = digits.length-1; while (i>=0&...原创 2019-07-15 23:21:36 · 105 阅读 · 0 评论 -
每日算法题:19.7.5
题目:给定一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?找出所有满足条件且不重复的三元组。示例:输入:给定数组 nums = [-1, 0, 1, 2, -1, -4]输出:[[-1, 0, 1],[-1, -1, 2]]代码:public class Test11 { p...原创 2019-07-05 23:58:23 · 84 阅读 · 0 评论 -
每日算法题:19.8.5
题目:给出一个区间的集合,请合并所有重叠的区间。示例:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]代码:public class Test22 { @Test public void test(){ int[][] test =new int[][]{{1,4},{4,...原创 2019-08-06 00:03:26 · 94 阅读 · 0 评论 -
每日算法题:19.8.2
题目:给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例:输入: [2,3,1,1,4]输出: true代码:public class Test21 { public boolean canJump(int[] nums) { return function(0,...原创 2019-08-02 00:08:55 · 129 阅读 · 0 评论 -
每日算法题:19.8.8
题目:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?示例:输入: 3输出: 3代码:方法一:public class Test18 { public int climbStairs(int n) { return function(n,0); } publi...原创 2019-08-08 18:29:42 · 159 阅读 · 0 评论 -
每日算法题:19.8.18
题目:给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:输入:board =[['A','B','C','E'],['S','F','C','S'],['A','D','E','E']] word = "ABCCED"输出:...原创 2019-08-18 14:08:48 · 105 阅读 · 0 评论 -
每日算法题:19.8.22
题目:给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。示例:输入: nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6],n = 3输出: [1,2,2,3,5,6]代码:public class Test29 { public void m...原创 2019-08-22 17:52:51 · 114 阅读 · 0 评论 -
每日算法题:19.8.13
题目:给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[[1,3,1],[1,5,1],[4,2,1]]输出: 7代码:public class Test22 { public int minPathSum(int[][] grid) { int...原创 2019-08-13 10:11:49 · 151 阅读 · 0 评论 -
每日算法题:19.8.21
题目:给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。示例:输入: 1->2->3->3->4->4->5输出: 1->2->5代码:public class Test28 { public class ListNode { int val; Li...原创 2019-08-21 14:16:03 · 128 阅读 · 0 评论 -
每日算法题:19.8.12
题目:一个机器人位于一个 m x n 网格的左上角,机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角,现在考虑网格中有障碍物(1)。那么从左上角到右下角将会有多少条不同的路径?示例:输入:[[0,0,0],[0,1,0],[0,0,0]]输出: 2代码:public class Test21 { public int uniquePathsWithO...原创 2019-08-12 11:00:57 · 190 阅读 · 0 评论 -
每日算法题:19.8.20
题目:给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例:输入: 1->1->2->3->3输出: 1->2->3代码:public class Test27 { public class ListNode { int val; ListNode next; Li...原创 2019-08-20 17:07:18 · 102 阅读 · 0 评论 -
每日算法题:19.8.11
题目:一个机器人位于一个 m x n 网格的左上角,机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角,问总共有多少条不同的路径?示例:输入: m = 7, n = 3输出: 28代码:public class Test20 { public int uniquePaths(int m, int n) { if (m==1) { ...原创 2019-08-11 13:36:20 · 128 阅读 · 0 评论 -
每日算法题:19.8.15
题目:给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。示例:输入:nums = [1,2,3]输出:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]代码:public class Test24 { public List<List<Integer>> subsets(int[]...原创 2019-08-15 09:59:25 · 121 阅读 · 0 评论 -
每日算法题:19.8.23
题目:格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。格雷编码序列必须以 0 开头。示例:输入:2输出: [0,1,3,2]代码:public class Test30 { public List<Integer> grayCode(int n) { ...原创 2019-08-23 17:00:19 · 158 阅读 · 0 评论 -
每日算法题:19.8.7
题目:给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL代码:public class Test17 { public ListNode rotateRight(L...原创 2019-08-07 16:50:41 · 127 阅读 · 0 评论 -
每日算法题:19.8.19
题目:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。示例:输入:nums = [0,0,1,1,1,1,2,3,3]输出:7代码:public class Test26 { public int removeDuplicates(int[] nums) { if(nums.length<2...原创 2019-08-19 10:34:01 · 125 阅读 · 0 评论 -
每日算法题:19.8.14
题目:给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。示例:输入:输入: n = 4, k = 2输出:[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],]代码:public class Test23 { public List<List<Integer>> combine(int n,...原创 2019-08-14 10:02:36 · 128 阅读 · 0 评论 -
每日算法题:19.8.9
题目:以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。示例:输入:"/a/./b/../../c/"输出:"/c"代码:public class Test19 { public String simplifyPath(String path) { String[] source = path.split("...原创 2019-08-09 09:53:18 · 107 阅读 · 0 评论 -
每日算法题:19.8.6
题目:给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度。示例:输入: "Hello World"输出: 5代码:public class Test23 { public int lengthOfLastWord(String s) { if(s.trim().length()==0) { retur...原创 2019-08-06 22:12:00 · 127 阅读 · 0 评论 -
每日算法题:19.7.10
题目:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例:输入:nums = [0,0,1,1,1,2,2,3,3,4]输出:函数应该返回新的长度 5, 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。代码:...原创 2019-07-10 23:15:10 · 109 阅读 · 0 评论 -
每日算法题:19.6.29
题目:编写一个函数来查找字符串数组中的最长公共前缀,如果不存在公共前缀,返回空字符串 ""。示例:输入: ["flower","flow","flight"]输出: "fl"代码:public class Test10 { public static void main(String[] args) { String[] test = new St...原创 2019-06-29 23:50:41 · 182 阅读 · 1 评论 -
每日算法题:19.7.14
题目:实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。 必须原地修改,只允许使用额外常数空间。示例:输入:1,2,3输出:1,3,2代码:public class Test15 { @Test public void test(){ ...原创 2019-07-14 20:37:48 · 215 阅读 · 0 评论 -
每日算法题:19.6.4
快速排序算法概述:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。算法过程:从数列中挑出一个元素,称为 “基准”(pivot)重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数...原创 2019-06-04 17:28:25 · 144 阅读 · 0 评论 -
每日算法题:19.6.15
基数排序算法概述:基数排序也是非比较的排序算法,对每一位进行排序,从最低位开始排序,复杂度为O(kn),为数组长度,k为数组中的数的最大的位数;基数排序是按照低位先排序,然后收集;再按照高位排序,然后再收集;依次类推,直到最高位。算法过程:取得数组中的最大数,并取得位数;arr为原始数组,从最低位开始取每个位组成radix数组;对radix进行计数排序(利用计数排序适用于小范...原创 2019-06-15 22:24:05 · 118 阅读 · 0 评论 -
每日算法题:19.6.20
题目:给定一个字符串 s,找到 s 中最长的回文子串示例:输入: "babad"输出: "bab"代码:public class Test4 { public static void main(String[] args) { String s = "cbbdsdfsdfsdsczssfsdsaaaaa"; String s1 = lo...原创 2019-06-20 11:49:08 · 163 阅读 · 0 评论 -
每日算法题:19.6.19
题目:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例:输入: 121输出: true代码:public class Test1 { public static void main(String[] args) { boolean palindrome = new Test1().isPalindrome...原创 2019-06-19 23:55:14 · 109 阅读 · 0 评论 -
每日算法题:19.6.2
归并排序算法描述:采用分治的思想,将一个序列分为两个子序列,将这两个子序列采用归并排序成两个有序的子序列后,将这两个子序列合并算法过程:把长度为n的输入序列分成两个长度为n/2的子序列;对这两个子序列分别采用归并排序;将两个排序好的子序列合并成一个最终的排序序列。时间复杂度:最佳情况:T(n) = O(n) 最差情况:T(n) = O(nlogn) 平均情况:...原创 2019-06-02 23:27:53 · 120 阅读 · 0 评论