自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 收藏
  • 关注

原创 每日一题8.10 lc39

因为这道题目与一般递归的不同在于,它的数字可以重复出现但是相同元素的数组却不能重复出现,这就导致一个问题,即我们不能通过标记该数字是否出现来进行排除,因为所有数字都有可能再度被引用,而不能排除则会导致重复数组的出现,如第一个例子中会出现2,2,3以及2,3,2的重复答案。要解决这个问题最好的办法就是先进行排序(ps.数组先排序在绝大多数情况都能大大简化骤),然后记录每一步的开始位置,例如循环从2开始则下一步的递归也从2开始。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,保证和为。

2023-08-10 13:56:11 174

原创 每日一题lc18 四数之和

四数之和和三数之和没什么本质的区别,最直观的做法就是将四数之后转换为三数之和后,套用三数之和的公式。我用了temp作为临时变量,减去第一个数字,剩下三个数字套用三数之和解法即可。请你找出并返回满足下述全部条件且。

2023-08-09 14:28:21 172

原创 每日一题8.3 345

双指针的题目,思路很清晰,设置一个left指针和right指针,当某一个指针指到元音字母时停止,等待另外一个指针也找到元音字母。当两个指针都指向元音字母时,交换字母。当指针相遇时退出循环。,仅反转字符串中的所有元音字母,并返回结果字符串。,且可能以大小写两种形式出现不止一次。

2023-08-03 13:48:36 279

原创 每日一题8.2 2536

我做的时候将所有的单列看作一个一维数组,如果该数组中有部分被包在目标数组中,则将头加一,尾部后一位减一,得出该数组的差分数组,最后将二维数组竖向求前缀和即可。- 第一个操作:将左上角为 (1, 1) 且右下角为 (2, 2) 的子矩阵中的每个元素加 1。- 第二个操作:将左上角为 (0, 0) 且右下角为 (1, 1) 的子矩阵中的每个元素加 1。上图所展示的分别是:初始矩阵、执行完第一个操作后的矩阵、执行完第二个操作后的矩阵。返回执行完所有操作后得到的矩阵。,矩阵中填满了 0。

2023-08-02 11:11:12 523

原创 每日一题8.1 1109

首先解释一下什么是差分,差分指的是一位元素与其相邻元素的差值,如num[n]-num[n-1]。差分数组即为每一位元素都是原本元素与其前一位相减所得到的差值组成的元素。该题本质上是区间加减运算,因此我们只要得知区间的开头与结尾就可以知道该区间的差分数组,最后用前缀和还原即可。预订记录 3 : 25 25 25 25。因此,answer = [10,55,45,25,25],里面的元素是每个航班预定的座位总数。预订记录 1 : 10 10。预订记录 1 : 10 10。

2023-08-01 13:58:26 98

原创 每日一题7.28 209

双指针,一个指针滑动负责放入元素,另外一个指针负责取出元素,到底时退出循环,简单粗暴,最后输出记录过的最小元素数就好。本题应该是用前缀和的方法完成,但是滑动窗口实在太牛逼了,谁用谁知道。如果不存在符合条件的子数组,返回。个正整数的数组和一个正整数。找出该数组中满足其和。

2023-07-28 17:21:47 287

原创 每日一题7.26 23

其实这道题我们可以将数组里面的各个部分分为几个有序数列的连接,而峰值就处在连接处,我们只要找到每个数组的连接处即可。而另外一个难点是,数组中的几个有序数列不一定是升序数列,而是升降混合,因此我们应当先做数列的升序降序判断。首先来看题目,题中所求峰值元素为大于作用两边的元素,最简单的方法肯定是循环遍历,左右对比,最后输出坐标,但是题目条件要求时间复杂度必须为o(log n)。而我们最熟悉的该时间复杂度的算法是二分法。二分法的使用的最大的问题是,只能用于有序的数组,而题目中却是乱序数组,该如何解决这个问题呢?

2023-07-26 11:11:27 96

原创 每日一题day6

每日一题day6

2022-07-18 17:28:22 83 1

原创 每日一题day5

每日一题day5

2022-07-15 21:55:30 252

原创 暑假每日一题(day4)

每日一题第四天

2022-07-14 18:04:33 56

原创 暑假第一题

今日份题目

2022-07-11 20:36:55 59

原创 新年第八题

229. 求众数 II给定一个大小为n的整数数组,找出其中所有出现超过⌊ n/3 ⌋次的元素。示例1:输入:[3,2,3]输出:[3]示例 2:输入:nums = [1]输出:[1]示例 3:输入:[1,1,1,3,3,2,2,2]输出:[1,2]最简单的思路,通过比较出现次数和长度的三分之一来进行筛选,而次数统计的方法可以参考昨天那题力扣官方给的方法,也就是利用hashmap进行统计。 public static List<Inte...

2022-02-18 21:34:23 106

原创 新年第七题

137. 只出现一次的数字 II给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。示例 1:输入:nums = [2,2,3,2]输出:3示例 2:输入:nums = [0,1,0,1,0,1,99]输出:99在之前我们做过一个类似的题目-->力扣的540题,两题的区别在于,之前的题目只有两个重复数字且数字是按照顺序排列的,这题改为了三个数字,且将顺序打乱了,所以这里我们可以先使用排序,将..

2022-02-17 21:19:43 235

原创 新年第五题

540. 有序数组中的单一元素给你一个仅由整数组成的有序数组,其中每个元素都会出现两次,唯有一个数只会出现一次。请你找出并返回只出现一次的那个数。你设计的解决方案必须满足 O(log n) 时间复杂度和 O(1) 空间复杂度。示例 1:输入: nums = [1,1,2,3,3,4,4,8,8]输出: 2示例 2:输入: nums = [3,3,7,7,10,11,11]输出: 10使用简单粗暴的for循环就可以解决这题。思路很简单,因为题目说是有序数列,所以相同.

2022-02-14 22:42:18 138

原创 新年第三题

150. 逆波兰表达式求值根据逆波兰表示法,求表达式的值。有效的算符包括+、-、*、/。每个运算对象可以是整数,也可以是另一个逆波兰表达式。注意两个整数之间的除法只保留整数部分。可以保证给定的逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例1:输入:tokens = ["2","1","+","3","*"]输出:9解释:该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9示例2:输入:tok...

2022-02-11 13:44:18 242

原创 新年第三题

274. H 指数给你一个整数数组citations,其中citations[i]表示研究者的第i篇论文被引用的次数。计算并返回该研究者的h指数。根据维基百科上h 指数的定义:h 代表“高引用次数”,一名科研人员的h指数是指他(她)的 (n篇论文中)总共有h篇论文分别被引用了至少h次。且其余的n - h篇论文每篇被引用次数不超过h次。如果h有多种可能的值,h指数是其中最大的那个。示例 1:输入:citations = [3,0,6,1...

2022-02-10 19:00:05 255

原创 新年第二题

1414. 和为 K 的最少斐波那契数字数目给你数字k,请你返回和为k的斐波那契数字的最少数目,其中,每个斐波那契数字都可以被使用多次。斐波那契数字定义为:F1= 1 F2= 1 Fn= Fn-1+ Fn-2, 其中 n > 2 。数据保证对于给定的k,一定能找到可行解示例 1:输入:k = 7输出:2 解释:斐波那契数字为:1,1,2,3,5,8,13,……对于 k = 7 ,我们可以得到 2 + 5 = 7 。示例 2:输入:k =...

2022-02-09 10:15:56 260

原创 新年第一题

2155. 分组得分最高的所有下标给你一个下标从0开始的二进制数组nums,数组长度为n。nums可以按下标i(0 <= i <= n)拆分成两个数组(可能为空):numsleft和numsright。numsleft包含nums中从下标0到i - 1的所有元素(包括0和i - 1),而numsright包含nums中从下标i到n - 1的所有元素(包括i和n - 1)。 如果i == 0,numsleft为...

2022-02-08 12:50:23 568

原创 寒假每日一题(day22)

2149. 按符号重排数组给你一个下标从0开始的整数数组nums,数组长度为偶数,由数目相等的正整数和负整数组成。你需要重排nums中的元素,使修改后的数组满足下述条件:任意连续的两个整数符号相反 对于符号相同的所有整数,保留它们在nums中的顺序。 重排后数组以正整数开头。重排元素满足上述条件后,返回修改后的数组。示例 1:输入:nums = [3,1,-2,-5,2,-4]输出:[3,-2,1,-5,2,-4]解释:nums 中的正...

2022-01-26 09:32:47 348

原创 寒假每日一题(day21)

2145. 统计隐藏数组数目给你一个下标从0开始且长度为n的整数数组differences,它表示一个长度为n + 1的隐藏数组相邻元素之间的差值。更正式的表述为:我们将隐藏数组记作hidden,那么differences[i] = hidden[i + 1] - hidden[i]。同时给你两个整数lower和upper,它们表示隐藏数组中所有数字的值都在闭区间[lower, upper]之间。比方说,differences = [1, -3...

2022-01-25 23:16:25 82

原创 寒假每日一题(day19)

179. 最大数给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。示例 1:输入:nums = [10,2]输出:"210"示例 2:输入:nums = [3,30,34,5,9]输出:"9534330"示例 3:输入:nums = [1]输出:"1"示例 4:输入:nums = [10]输出:"10"...

2022-01-21 13:07:21 598

原创 寒假每日一题(day18)

1894. 找到需要补充粉笔的学生编号一个班级里有n个学生,编号为0到n - 1。每个学生会依次回答问题,编号为0的学生先回答,然后是编号为1的学生,以此类推,直到编号为n - 1的学生,然后老师会重复这个过程,重新从编号为0的学生开始回答问题。给你一个长度为n且下标从0开始的整数数组chalk和一个整数k。一开始粉笔盒里总共有k支粉笔。当编号为i的学生回答问题时,他会消耗chalk[i]支粉笔。如果剩余粉笔数量严格小于chalk[i],...

2022-01-20 15:05:52 62

原创 寒假每日一题(day15)

405. 数字转换为十六进制数给定一个整数,编写一个算法将这个数转换为十六进制数。对于负整数,我们通常使用补码运算方法。注意:十六进制中所有字母(a-f)都必须是小写。 十六进制字符串中不能包含多余的前导零。如果要转化的数为0,那么以单个字符'0'来表示;对于其他情况,十六进制字符串中的第一个字符将不会是0字符。 给定的数确保在32位有符号整数范围内。 不能使用任何由库提供的将数字直接转换或格式化为十六进制的方法。示例 1:输入:26输出:"1a"示例 2:...

2022-01-17 11:09:27 64

原创 IO流笔记整理

目录IO流输入/输出流输入流输出流IO流输入/输出流“流”是一个抽象概念,是指不同设备间数据传输内容的抽象。当需要从一个数据源读取或是向一个目标写入一个数据时,就可以使用流。数据源可以是文件、内存、网络连接等,流就是这些数据砸死传输过程中的抽象概念,也可以理解为一个有序列的数据。输入流InputStream类用于处理字节流,用于处理汉字时可能会出现乱码。方法 功能描述 available() 返回输入流预估的可读字节数 close(

2022-01-15 16:53:15 223

原创 集合类的笔记整理

目录集合集合类的概念List集合Set集合集合集合类的概念Java提供了一些类,这些类相当于容器,能够存储一系列的对象的引用,统称为集合类,其中存储的每个内容称为元素。集合中的接口有两个,分别是collection接口和map接口。方法 功能描述 add(E e) 将指定元素添加到集合,E代指该集合中储存元素的类型 addAll(Collection<? extends E> e) 将指定集合全部添加...

2022-01-15 00:38:34 471

原创 寒假每日一题(day13)

747. 至少是其他数字两倍的最大数给你一个整数数组nums,其中总是存在唯一的一个最大整数 。请你找出数组中的最大元素并检查它是否至少是数组中每个其他数字的两倍。如果是,则返回最大元素的下标,否则返回-1。示例 1:输入:nums = [3,6,1,0]输出:1解释:6 是最大的整数,对于数组中的其他整数,6 大于数组中其他元素的两倍。6 的下标是 1 ,所以返回 1 。示例 2:输入:nums = [1,2,3,4]输出:-1解释:4 没有超过 ...

2022-01-13 11:14:22 110

原创 寒假每日一题(day11)

1208. 尽可能使字符串相等给你两个长度相同的字符串,s和t。将s中的第i个字符变到t中的第i个字符需要|s[i] - t[i]|的开销(开销可能为 0),也就是两个字符的 ASCII 码值的差的绝对值。用于变更字符串的最大预算是maxCost。在转化字符串时,总开销应当小于等于该预算,这也意味着字符串的转化可能是不完全的。如果你可以将s的子字符串转化为它在t中对应的子字符串,则返回可以转化的最大长度。如果s中没有子字符串可以转化成t中对应的子...

2022-01-10 14:28:31 52

原创 寒假每日一题(day10)

你在和朋友一起玩 猜数字(Bulls and Cows)游戏,该游戏规则如下:写出一个秘密数字,并请朋友猜这个数字是多少。朋友每猜测一次,你就会给他一个包含下述信息的提示:猜测数字中有多少位属于数字和确切位置都猜对了(称为 "Bulls",公牛),有多少位属于数字猜对了但是位置不对(称为 "Cows",奶牛)。也就是说,这次猜测中有多少位非公牛数字可以通过重新排列转换成公牛数字。给你一个秘密数字secret 和朋友猜测的数字guess ,请你返回对朋友这次猜测的提示。提示的格式为 "xA..

2022-01-07 13:14:02 81

原创 寒假每日一题(day9)

将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行Z 字形排列。比如输入字符串为 "PAYPALISHIRING"行数为 3 时,排列如下:P A H NA P L S I I GY I R之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"PAHNAPLSIIGYIR"。请你实现这个将字符串进行指定行数变换的函数:string convert(string s, int numRows);示例 1:输入:...

2022-01-06 14:27:27 60

原创 寒假每日一题(day8)

因为电脑问题打不开力扣了,所以通过截图之后在补上 public static String addSpaces(String s, int[] spaces) { for (int i = 0; i < spaces.length; i++) { spaces[i] += i; } char[] ch = s.toCharArray(); ArrayList list=new ArrayList();

2022-01-05 18:41:25 438

原创 寒假每日一题(day7)

力扣168题,每日一练

2022-01-04 10:28:11 317

原创 寒假每日一题(day6)

这是我做题时第一版的想法,即先将数组按顺序排列,这样数组下标与数字就会有某种对应关系,然后先查重,再根据前后项的差值就可以找出缺失的数字,但是缺失数字在开头和结尾的两种情况容易漏掉,所以我们要单独陈列。class Solution { public int[] findErrorNums(int[] nums) { quicksort(nums); int[] matrix=new int[2]; for (int i=0;i<nums..

2022-01-03 15:14:32 130

原创 周学习笔记(1)

笔记资料整理

2022-01-02 10:50:59 83

原创 蓝桥杯魔方难题

蓝桥杯实例的第一题,这题的思路其实非常简单,只需要用数组定义六个面,再定义每个面中的小模块即可,一维数组、二维数组皆可。给出的X、Y、Z的三种转法则分别定义三个方法即可。困难的是如何实时读取输入的xyz,这里我想了个办法就是定义一个数组,储存输入的数组,再用循环读取数组,当读取到最后一个字符就脱出循环。package project2;import java.util.Scanner;public class mofangnanti { // * 0为绿色,1为红色,2为白色 .

2022-01-01 14:11:07 311

原创 寒假每日一题(day5)

今天这道题给我们要先将s字符串转化为数组,之后设置两个指针从两头头开始读取字符。跳字符时会出现两种情况,即删去左边的字符和删去右边的字符。我们难以判断这两种情况的取舍,既然如此那我们不如都走一遍,只要有一种情况能走通,那么即可返回ture...

2021-12-31 16:05:23 157

原创 寒假每日一题(day04)

这是第一版的答案,用另外一个数组来存放艾希中毒的时间,然后遍历数组读取秒数的个数。这个方法有个很大的问题就是超时了(哭)所以我们只好重新再想办法。上个方法我们用了四个循环,甚至还使用了嵌套,导致时间复杂度爆炸了,这次我们将循环减少到一次,其实这道题中最难的部分就在于两次中毒叠加的情况,因为元素个数与输入时间的次数是相同的,且最后一次必定与duration相同,因此我们循环次数应当减一。如果遇到两次下毒重合情况,我们只需计算出时间短的那次所花时间加上duration即可。...

2021-12-30 11:12:18 114

原创 寒假每日一题(day3)

先讲第一题,没什么好说的,双for循环暴力破解就完事了(看了一下解法,哈希表是啥完全不懂(无奈))第二题是第一题的变相,简单解法就是x,y加个1输出结果就行了但是因为这样时间复杂度会非常高,所以我们要改良一下,利用一下题目中给出的已知为递增排列。通过if循环缩小数组的选定范围这样时间一下子可以缩短三分之二顺着这个思路,我们可以想到一个新的方法,也就是先假定一个最小值,通过目标值减去最小值,在数组中检索,最后在数组中用二分法进行检索,时间大大缩短...

2021-12-29 11:29:55 52

原创 暑假每日一题(day2)

这次没什么好说的,我对题目中“对应”的理解有一点偏差,所以最后是别人提点了我一下简单归结一下思路,这题最难的就是“*”的不确定性,但事实上“*”真正起作用时只有在它变成“(”或者是“)”的时候,因此我们采用暴力破解,也就是假设“*”起作用的所有情况。我们定变量Left,Right分别表示“*”为“)”和“(”两种情况下未配对的“(”的数量变化,当出现“)”时,将“(”的量减一,暴力破解“*”的变化...

2021-12-28 20:52:41 114

原创 暑假每日一题(day1)

这次要求写一个回字形数组,主要难点在于写数组时的四个循环即从左到右、从上到下、从右到左、从下到上依次循环。一开始我想试试看能不能用多线程解决,然后我发现四线程依次轮换我不会。。。...

2021-12-27 14:44:13 44

原创 每日一题(day8)(傻瓜解法)

public static double Pow(double x,int n){ double num=1; if (n > 0) { for (int i=0;i<n;i++){ num*=x; } } else if(n<0){ for (int i=0;i<-n;i++){ num/=x; } } return num;}p.

2021-12-10 09:56:55 172

空空如也

空空如也

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

TA关注的人

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