- 博客(24)
- 收藏
- 关注
原创 差分+排序不等式+贪心
看到尽可能大这种,就想着要求最优解,然后看查询了好几次,那么查询次数最多的区间,肯定要分配更大的数字,才能满足题目的要求,然后落实到每个数上就是,总的来说,a[i]就是b[1~i]的前缀和数组,那么构成a[i]的b[1],b[2]…b[i]就是差分数组.那么如何才能得到查询的次数呢,有两种办法,一种就是暴力算出每个位置的查询次数,另一种就是用差分的思想,因为。a[N],构造差分数组,使得a[i]=b[1]+b[2]+…:如果两个序列都是相反的排序顺序,即一个从小到大,一个从大到小,这样求得的结果是最小的。
2023-03-28 18:35:40
353
原创 前缀和+模拟+归并排序
令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的,有采用月/日/年的,还有采用日/月/年的。这里所说的连号区间的定义是:如果区间 [L,R] 里的所有元素(即此排列的第 L个到第 R 个元素)递增排序后能得到一个长度为 R−L+1 的“连续”数列,则称这个区间连号区间。当 N 很小的时候,小明可以很快地算出答案,但是当 N 变大的时候,问题就不是那么简单了,现在小明需要你的帮助。:因为要求第l到第r个数的和,所以就可以想到前缀和,也就是前r个数的和减去前l个数的和就是第l到第r个数的和。
2023-03-17 15:56:28
268
原创 力扣初级算法练习Day13
文章目录前言一、验证回文字符串总结前言日日有思,一、验证回文字符串题目:给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。摘要:验证字符串正写反写是否一样原思想:先用trim()方法把字符串的空白符去掉,然后用replace方法把字符串的,以及:替换成“”,这样字符串就是纯英文或数字的字符串,然后将字符串传化为StringBuffer形式,用reverse()方法实现字符串的反转,生成一个新的Stringbuffer,然后将这两个StringBuffer转化为字
2022-05-24 18:32:21
209
原创 力扣初级算法练习Day12
文章目录前言一、有效的字母异位词总结前言被测试用例整懵逼了,感觉自己是对的。。。一、有效的字母异位词题目:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。摘要:两个字符串、每个字符出现的次数都相同才称两个字符串互为异位词原思想:首先创建两个HashMap,然后将字符串转化成两个char型的数组,然后遍历两个char型数组,存入HashMap中,格式为:Key(char)-
2022-05-16 17:30:34
277
原创 力扣初级算法练习Day10
文章目录前言一、字符串中的第一个唯一字符总结前言用几种方式都做错了一、字符串中的第一个唯一字符题目:给定一个字符串 s ,找到 它的第一个不重复的字符,并返回它的索引 。如果不存在,则返回 -1 ;摘要:字符串、找到第一个、不重复的字符、返回不重复字符的索引、如果没找到则返回-1;原思想:刚开始想用数组,然后进行数组排序,创建集合,把元素添加到集合中,返回能添加元素的第一个元素,后来发现,不管怎样,都会添加一个元素进去,无法区分重复与否;然后就说用双指针,队数组进行两次循环,当遍历指向前
2022-05-15 18:57:54
247
原创 力扣初级算法练习Day09
文章目录前言一、反转字符串二、整数反转前言阴天快乐一、反转字符串题目:编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。摘要:实现字符串反转原思想:二分法查找,双指针反转,一个从前往后,一个从后往前,交换所指向元素原代码:class Solution { public void reverseString(char[] s) { for(int i=0;i<s.length/2;i++){ int
2022-05-14 17:26:34
997
原创 力扣初级算法练习Day08
文章目录前言一、旋转图像前言这道题刚开始没思路,想着要用数学方法求解,于是想到了矩阵一、旋转图像题目:给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。摘要:旋转数组原思想:先交换第一行和最后一行,然后交换第二行和倒数第二行,然后交换第三行和倒数第三行。。。到交换到行不能交换为止,然后以对角线为中心,对称的交换对角线两边的元素原代码:cl
2022-05-13 17:03:44
193
原创 力扣初级算法练习Day07
文章目录前言一、两数之和二、有效的数独前言本来今天打算要做两道题,但是第二个实在只能想一半,所以看题解了一、两数之和题目:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。摘要:整数数组、目标值、两个数组和为目标值、返回和为目标值的两个数组的下标原思想:双指针,遍历数组,第一个指针确定第一
2022-05-12 22:04:07
220
原创 力扣初级算法练习Day06
文章目录前言一、移动零前言写的我脑子乱了一、移动零题目:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。摘要:所有0移到数组末尾、保持非零元素的相对顺序、不复制数组、原地操作;原思想:两个指针,首先第一个指针遍历,寻找到元素0的位置,然后遍历第二个指针,如果第二个指针指向元素不为0,则交换第一个指针指向0的元素和第二个指针指向的元素,然后继续遍历,找到元素0的位置,继续交换原代码:clas
2022-05-10 21:35:08
169
原创 力扣初级算法练习Day05
文章目录前言一、加一前言今天瞌睡的一、加一题目:给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。摘要: 整数非负数组、在最后面的数加1原思想:其实就是进位的思想,0~9满10进1,那么就先取出数组的长度,从后往前遍历数组,若数组最后一位不是九,那么就让最后一位加1并返回数组即可,如果最后一位是九,那么就让其进1,赋值为0,然后遍历倒数第二位,如果倒是第
2022-05-09 20:52:49
178
原创 力扣初级算法练习Day04
文章目录前言一、两个数组的交集 II总结前言今天被一个小细节整懵逼了一小时一、两个数组的交集 II题目:给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。摘要:整数数组、数组形式返回、交集、交集中有重复多次的要按重复多次取,不一致取最小值原思想:先对参数数组进行排序,然后取两个数组的长度,比较数组长度的大小,取最小值,然后创建一个以
2022-05-08 21:18:00
223
原创 力扣初级算法练习Day03
文章目录前言一、只出现一次的数字总结前言心情难过,练习一道题一、只出现一次的数字题目:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。摘要:非空、整数数组、某数字只出现一次、其余元素均出现两次、找出现一次的元素;原思想:先将数组进行排序,然后前后比较,如果前后元素不相等,则返回前元素原代码:class Solution { public int singleNumber(int[] nums) { Arrays
2022-05-07 15:29:18
291
原创 力扣初级算法练习Day02
文章目录前言一、旋转数组二、存在重复元素总结前言今天健完身,休息了会来实验室做算法题,刚开始没状态,后来还可以。一、旋转数组题目:给你一个数组,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。摘要:数组、向右轮转k个位置、k是非负数;原思想:我想法很普通,完全是出于代码的逻辑,就是定义一个新数组,然后遍历传入的参数数组,每次遍历使新数组的下标等于参数数组的下标与轮转数k的和,如果和比参数数组要大,说明轮转已经超过了数组的长度,需要在轮转到数组最大长度后重头再来,那么就使得新数组的下标
2022-05-06 21:03:59
242
原创 力扣初级算法练习day01
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、删除排序数组中的重复项二、买卖股票的最大时机2总结前言来了实验室,挺安静,这么安静的环境就得思考点事情。一、删除排序数组中的重复项题目:给你一个 升序排列的数组 nums ,请原地删除重复出现的元素,使每个元素只出现一次 ,返回删除后数组的新长度。元素的相对顺序应该保持 一致。摘要:升序的数组、原地删除、删除重复元素使每个元素只出现一次、元素的相对位置不能变、返回新长度原思想:两个指针,一个控制左边、一个控.
2022-05-05 18:25:37
1214
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人