自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 107

原创 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 140

原创 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 251

原创 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 202

原创 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 149

原创 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 202

原创 3_无重复字符的最长子串(JAVA)

右指针向后遍历,遇见一个元素即放入Hash中,每放一次判断是否重复,即判断当前字符作为key对应的value:若重复,左指针向后遍历,将每个当前元素作为key对应的value-1,直到Hash中的右指针的当前字符value<1即可。请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。

2024-05-21 12:05:48 120 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 170 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 280

原创 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 183 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 111

原创 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 117 1

原创 128_最长连续序列(JAVA)

2、从每个元素开始判断当前的元素是否为序列的开始,即判断Hash中有没有比当前小1的元素;3、从开始的元素一直查找Hash表内比当前元素大1的元素,直到找不到这样的元素;4、更新最长序列长度,从下一个元素再开始判断。1、把nums数组加入到Hash表;

2024-05-09 08:59:01 183 1

原创 【洛谷】P1144 最短路计数 C++(堆优化Dijkstra+BFS)

【洛谷】P1144 最短路计数 C++(堆优化Dijkstra+BFS)

2023-03-08 17:29:17 703 1

原创 【洛谷】P1546 [USACO3.1]最短网络 Agri-Net C++(Kruskal+并查集)

【洛谷】P1546 [USACO3.1]最短网络 Agri-Net C++(Kruskal+并查集)

2023-03-08 16:30:40 645

原创 素数对猜想 (20 分)

输入格式:输入在一行给出正整数N。输出格式:在一行中输出不超过N的满足猜想的素数对的个数。输入样例:20输出样例:4思路:判断素数:一个合数可以用(本身开根号)²的形式表示,也可以用两个素数的乘积表示,只需判断从2开始到(本身开根号)结束,这段验证是否为素数。例如:数字6是一个合数,可以用(根号六)²表示,也可以由2*3得来,只需看6能否整除2,显然可以,所以6为合数。此方法可节约很多时间,如果要判断10000的数字里面素数的个数,只需要循环100次即可,无需循环10000次。#i.

2021-04-13 15:46:49 221 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 465

原创 换个格式输出整数 (15 分)

换个格式输出整数 (15 分)hello大家好,我们一起来看一看这道比较基础的换格式输出题目~题目内容大致是这样的:让我们用字母 B 来表示“百”、字母 S 表示“十”,用 12…n 来表示不为零的个位数字 n(<10),换个格式来输出任一个不超过 3 位的正整数。例如 234 应该被输出为 BBSSS1234,因为它有 2 个“百”、3 个“十”、以及个位的 4。输入格式:每个测试输入包含 1 个测试用例,给出正整数 n(<1000)。输出格式:每个测试用例的输出占一行,用规定的

2021-04-13 11:11:31 110

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除