- 博客(18)
- 问答 (1)
- 收藏
- 关注
原创 238_除自身以外数组的乘积(JAVA)
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。1、想象构造一个对角线为1,每一列元素皆为nums[i],因为如此,所以每一行的乘积就是所求,即现在分为了上三角和下三角的两部分;题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。输入: nums = [-1,1,0,-3,3]输入: nums = [1,2,3,4]输出: [0,0,9,0,0]
2024-06-19 16:23:48 127
原创 189_轮转数组(JAVA)
输入: nums = [1,2,3,4,5,6,7], k = 3。输入:nums = [-1,-100,3,99], k = 2。向右轮转 1 步: [7,1,2,3,4,5,6]向右轮转 2 步: [6,7,1,2,3,4,5]向右轮转 3 步: [5,6,7,1,2,3,4]向右轮转 1 步: [99,-1,-100,3]向右轮转 2 步: [3,99,-1,-100]3、【k,nums.length-1】倒置。输出: [5,6,7,1,2,3,4]输出:[3,99,-1,-100]
2024-06-19 15:25:14 159
原创 56_合并区间(JAVA)
以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi]。输入:intervals = [[1,3],[2,6],[8,10],[15,18]]解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].解释:区间 [1,4] 和 [4,5] 可被视为重叠区间。输入:intervals = [[1,4],[4,5]]输出:[[1,6],[8,10],[15,18]]3、记住将最后一个区间也加入到列表中!输出:[[1,5]]
2024-06-11 23:46:24 336
原创 53_最大子数组和(JAVA)
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。循环遍历数组,每次验证dp[i-1]+nums[i]是否比dp[i-1]大,取二者最大值。输入:nums = [-2,1,-3,4,-1,2,1,-5,4]解释:连续子数组 [4,-1,2,1] 的和最大,为 6。输入:nums = [5,4,-1,7,8]用dp[i]记录以i为结尾的数组最大的和。输入:nums = [1]是数组中的一个连续部分。
2024-06-06 15:00:36 222
原创 239_滑动窗口最大值(JAVA)
给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。输入:nums = [1,3,-1,-3,5,3,6,7], k = 3。滑动窗口的位置 最大值。用一个数组记录每个窗口的最大值即队列的第一个元素;用一个双向队列记录当前窗口内的数值大小顺序情况;输入:nums = [1], k = 1。保证队列中仅有当前窗口的元素且降序排列。输出:[3,3,5,5,6,7]返回 滑动窗口中的最大值。
2024-06-05 15:06:29 172
原创 438_找到字符串中所有字母异位词(JAVA)
给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。起始索引等于 0 的子串是 “cba”, 它是 “abc” 的异位词。起始索引等于 6 的子串是 “bac”, 它是 “abc” 的异位词。起始索引等于 0 的子串是 “ab”, 它是 “ab” 的异位词。起始索引等于 1 的子串是 “ba”, 它是 “ab” 的异位词。起始索引等于 2 的子串是 “ab”, 它是 “ab” 的异位词。输入: s = “abab”, p = “ab”输出: [0,1,2]
2024-06-01 21:00:47 235
原创 3_无重复字符的最长子串(JAVA)
右指针向后遍历,遇见一个元素即放入Hash中,每放一次判断是否重复,即判断当前字符作为key对应的value:若重复,左指针向后遍历,将每个当前元素作为key对应的value-1,直到Hash中的右指针的当前字符value<1即可。请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。
2024-05-21 12:05:48 133 1
原创 42_接雨水(JAVA)
解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输入:height = [4,2,0,3,2,5]
2024-05-14 18:30:03 187 2
原创 15_三数之和(JAVA)
解题思路:先递增排序,然后固定指针k从头遍历数组,另设两个指针一前一后向中间遍历数组,在每一个循环中,如果三数之和大于0,即将后指针前移,如果三数之和小于0,即将前指针后移,若等于0,则new Arraylist(Arrays.aslist(nums[k],nums[i],nums[j]))添加到全局创建的列表中。给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i!输出:[[-1,-1,2],[-1,0,1]]输出:[[0,0,0]]
2024-05-13 21:32:16 312
原创 11_盛最多水的容器(JAVA)
有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i])。解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。此处有省时小技巧:即若移动后的高度更矮,则没必要再循环计算面积,因此判断移动后的高度是否比当前大。因此,将双指针分开工作,一头一尾向中间靠拢,每次先比较面积,取最大值,后将较矮的一侧移动。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。输入:[1,8,6,2,5,4,8,3,7]输入:height = [1,1]
2024-05-11 21:20:30 205 1
原创 283_移动零(JAVA)
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。步骤:1、第一个指针遍历将非零元素赋值给后一指针指向的位置,后一指针++后移。请注意 ,必须在不复制数组的情况下原地对数组进行操作。解题思路:双指针,一个从前到后遍历,一个指向当前元素。输入: nums = [0,1,0,3,12]2、遍历完非零元素,将剩下的元素赋值0。输出: [1,3,12,0,0]输入: nums = [0]
2024-05-10 11:37:29 137
原创 49_字母异位词分组(JAVA)
输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。字母异位词 是由重新排列源单词的所有字母得到的一个新单词。输入: strs = [“a”]输入: strs = [“”]第一种方法的时间复杂度更好哦!输出: [[“a”]]输出: [[“”]]
2024-05-09 20:18:17 129 1
原创 128_最长连续序列(JAVA)
2、从每个元素开始判断当前的元素是否为序列的开始,即判断Hash中有没有比当前小1的元素;3、从开始的元素一直查找Hash表内比当前元素大1的元素,直到找不到这样的元素;4、更新最长序列长度,从下一个元素再开始判断。1、把nums数组加入到Hash表;
2024-05-09 08:59:01 198 1
原创 【洛谷】P1144 最短路计数 C++(堆优化Dijkstra+BFS)
【洛谷】P1144 最短路计数 C++(堆优化Dijkstra+BFS)
2023-03-08 17:29:17 740 1
原创 【洛谷】P1546 [USACO3.1]最短网络 Agri-Net C++(Kruskal+并查集)
【洛谷】P1546 [USACO3.1]最短网络 Agri-Net C++(Kruskal+并查集)
2023-03-08 16:30:40 675
原创 素数对猜想 (20 分)
输入格式:输入在一行给出正整数N。输出格式:在一行中输出不超过N的满足猜想的素数对的个数。输入样例:20输出样例:4思路:判断素数:一个合数可以用(本身开根号)²的形式表示,也可以用两个素数的乘积表示,只需判断从2开始到(本身开根号)结束,这段验证是否为素数。例如:数字6是一个合数,可以用(根号六)²表示,也可以由2*3得来,只需看6能否整除2,显然可以,所以6为合数。此方法可节约很多时间,如果要判断10000的数字里面素数的个数,只需要循环100次即可,无需循环10000次。#i.
2021-04-13 15:46:49 232 2
原创 力扣——两数相加 Java
题目难度:中等给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例 1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例 2:输入:l1 = [0], l2 = [0]输出:[0]示例 3:输入:l1 = [9,9,9,9,9,9,
2021-04-13 14:19:08 496
原创 换个格式输出整数 (15 分)
换个格式输出整数 (15 分)hello大家好,我们一起来看一看这道比较基础的换格式输出题目~题目内容大致是这样的:让我们用字母 B 来表示“百”、字母 S 表示“十”,用 12…n 来表示不为零的个位数字 n(<10),换个格式来输出任一个不超过 3 位的正整数。例如 234 应该被输出为 BBSSS1234,因为它有 2 个“百”、3 个“十”、以及个位的 4。输入格式:每个测试输入包含 1 个测试用例,给出正整数 n(<1000)。输出格式:每个测试用例的输出占一行,用规定的
2021-04-13 11:11:31 120
空空如也
圣诞树代码运行起来是404
2021-12-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人