
算法
qq_38075852
这个作者很懒,什么都没留下…
展开
-
Leecode 长度最小的子数组 209
长度最小的子数组给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。示例 1:输入:target = 7, nums = [2,3,1,2,4,3]输出:2解释:子数组 [4,3] 是该条件下的长度最小的子数组。滑动窗口class Solution { public int mi.原创 2021-09-27 23:18:45 · 143 阅读 · 0 评论 -
Leecode 有序数组的平方 977
有序数组的平方给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。示例 1:输入:nums = [-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为 [16,1,0,9,100]排序后,数组变为 [0,1,9,16,100]双指针解法class Solution { public int[] sortedSquares(int[] nums) { int[] re.原创 2021-09-27 23:00:51 · 143 阅读 · 0 评论 -
Leecode 移除元素 27
移除元素给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// nums 是以“引用”方式传递的。也就是.原创 2021-09-26 22:31:01 · 129 阅读 · 0 评论 -
Leecode 704二分查找
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例 1:输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4class Solution { public int search(int[] nums, int target) { int res = -1;原创 2021-09-26 22:16:08 · 112 阅读 · 0 评论 -
LintCode 水仙花数
描述:水仙花数的定义是,这个数等于他每一位数上的幂次之和 见维基百科的定义比如一个3位的十进制整数153就是一个水仙花数。因为 153 = 13 + 53 + 33。而一个4位的十进制数1634也是一个水仙花数,因为 1634 = 14 + 64 + 34 + 44。给出n,找到所有的n位十进制水仙花数。暂时只想到这种写法public List<Integer> getNarcissisticNumbers(int n) { // write your code here原创 2020-06-16 21:51:01 · 164 阅读 · 0 评论 -
LintCode[简单]二分查找
LintCode[简单]二分查找描述:给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-1。例:public int binarySearch(int[] nums, int target) { // write your code here int min=0,max=nums.length; int result=-1;原创 2020-06-14 22:26:13 · 513 阅读 · 0 评论 -
LintCode[中等]二叉查找树中搜索区间
LintCode[中等]二叉查找树中搜索区间描述:给定一个二叉查找树和范围[k1, k2]。按照升序返回给定范围内的节点值。样例:输入:{20,8,22,4,12},10,22输出:[12,20,22]解释: 20 / \ 8 22 / \ 4 12它将被序列化为 {20,8,22,4,12}[12,20,22]介于10和22之间思路:按照中序遍历node节点获取所有数据存入list中判断输出public List&原创 2020-06-07 22:42:43 · 206 阅读 · 0 评论 -
LintCode[简单]合并两个有序升序的整数数组A和B变成一个新的数组。新数组也要有序
LintCode[简单]合并两个有序升序的整数数组A和B变成一个新的数组。新数组也要有序方式一: public int[] mergeSortedArray(int[] A, int[] B) { // write your code here int[] c=new int[A.length+B.length]; for(int i=0;i<A.length;i++){ c[i]=A[i]; }原创 2020-06-04 22:37:01 · 473 阅读 · 0 评论 -
LintCode[中等]在数组中找到第 k 大的元素。
LintCode[中等]在数组中找到第 k 大的元素。思路:这个按照题意应该是要自己手动写出排序时间复杂度为O(n),空间复杂度为O(1)的排序样例样例 1:输入:n = 1, nums = [1,3,4,2]输出:4样例 2:输入:n = 3, nums = [9,3,2,4,8]输出:4挑战要求时间复杂度为O(n),空间复杂度为O(1)。例:public int kthLargestElement(int n, int[] nums) { // writ原创 2020-06-02 22:48:00 · 146 阅读 · 0 评论 -
LIntCode[中等]丑数设计一个算法,找出只含素因子2,3,5 的第 n 小的数
LintCode[中等]设计一个算法,找出只含素因子2,3,5 的第 n 小的数。分析根据题目可得,丑数即由若干个2、3、5相乘所的到的数。可以写成2^a+ 3 ^b + 5 ^ ca,b,c可以取随意自然数再进一步分析,可以得到每个丑数都存在另一个丑数乘以2、3、5中的一个数,与之相等。题目要求要第n个小的丑数。思路:使用lis保存丑数,l2,l3,l5用来记录位置获取2l2,3l3,5*l5的值,获取最小的值与之比较,相等表示当前位置下标+1例:public static int原创 2020-06-02 22:35:21 · 454 阅读 · 0 评论 -
LintCode[简单]统计数字
LintCode[简单]统计数字描述:计算数字 k 在 0 到 n 中的出现的次数,k 可能是 0~9 的一个值。思路:1.目前能想到的就是for循环遍历数,获取该数字出现次数进行叠加2.这个题目应该是有规律的写法的,目前还没有先到规律是什么例: public int NumberOf1Between1AndN_Solution(int n) { //蛮力法 int onenums = 0; for(int i=1;i<=n;i++){//循原创 2020-05-31 09:28:58 · 163 阅读 · 0 评论 -
LintCode[中等]最长公共子串
LintCode[中等]最长公共子串描述:给出两个字符串,找到最长公共子串,并返回其长度。样例样例 1: 输入: "ABCD" and "CBCE" 输出: 2 解释: 最长公共子串是 "BC"样例 2: 输入: "ABCD" and "EACB" 输出: 1 解释: 最长公共子串是 'A' 或 'C' 或 'B'思路:1.判断二个字符串是否为空2.二层for循环获取A字符串每个字符到末尾的字符3.判断B字符是否包含A字符循环中截取的字符4.使用Ma原创 2020-05-30 22:50:28 · 150 阅读 · 0 评论 -
LintCode[简单]反转一个只有3位数的整数
描述:反转一个只有3位数的整数思路:while对对整数!=0进行循环判断2.判断条件内对整数进行取模计数,取模完进行赋值,在除以10(因为是int类型)所以个位数会消失以此类推样例样例 1:输入: number = 123输出: 321例:public class Solution { /** * @param number: A 3-digit number. * @return: Reversed number. */ public int原创 2020-05-25 22:36:33 · 320 阅读 · 0 评论 -
LintCode[简单]无重复字符的最长子串
给定一个字符串,找出不含有重复字符的最长子串的长度思路:二个for循环遍历字符串,可以得到每个字符到末尾的字符将字符使用set集合存储,当存在是返回false,当字符串都可以存储在set中时返回true用一个int类型max变量使用Math.max()与该set返回true是的长度进行比较替换public class Solution { public static void main(String[] args) { System.out.println(lengthOf原创 2020-05-25 22:35:39 · 102 阅读 · 0 评论 -
LintCode[简单]二数之和
给定一个整数数组和一个目标值,找出数组中和为目标值的二个数,可以假设有且只有一个答案,且同样的元素不能被重复利用思路:1.把数组的值和下标当做map的key,value保存2.便利数组,用传入的和减去遍历数组的值3.使用该值去map集合中查看看是否存在该键,在判断该键存储的下标是否为当前for遍历数组的下标例:public class SumDemo { public static void main(String[] args) { Integer[] ints=new原创 2020-05-25 22:30:59 · 114 阅读 · 0 评论