自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 求众数 II

题目解题思路假定num1,num2为出现次数大于nums.length/3的两个数。(最多出现两个)遍历 nums, 若出现 num1、num2 中任意一数,计数+1,若都不等,则计数-1.若 num1、num2 有一个计数 < 0,则替换成当前遍历数(更换新的众数)数组可能出现 无众数 或只有 一众数 情况,所以需要再次遍历数组,统计所选众数出现次数,将满足条件(出现次数大于 nums.length / 3 )的数加入返回集合。Codeclass Solution { pu

2022-02-18 10:45:58 374

原创 只出现一次的数字

题目解题思路先对原数组之中的元素进行排序,这样可以将大小相等的所有数字认为组合成一个一个的“块”。由于题中说明只会有 1 个出现一次的数字,从而只要 nums[i] != nums[i - 1] 并且 nums[i] != nums[i + 1] 即可为了防止数组越界,将数组的首尾进行特殊判断。对于数组中仅有一个数字的情况,只需要 res = nums[0] 即可满足题意Codeclass Solution { public int singleNumber(int[] nums

2022-02-18 10:38:08 210

原创 LeetCode-最简分数

题目解题思路思路一:通过双层循环,计算配套的分子分母是否有公约数,如果有公约数,则不添加到结果列表。思路二:同样是双层循环,分子分母按从小到大遍历,可知任何一个可约分的分数,它的实际值一定是在前面遍历过程中就出现过了。按照思路二,我们就可以创建Set记录下所有的不同值,并且只需要判断后面出现的分数值是否已经出现在集合内。Codeclass Solution { public List<String> simplifiedFractions(int n) {

2022-02-16 16:28:53 434

原创 员工的重要性

题目解题思路(广度优先搜索)首先找到要计算重要性员工 的id,id 进辅助队列并记录其重要性,然后该员工下属的 id 进队列,该员工的 id 出队列,之后再找到下属的 id 并记录重要性,重复上述步棸,直至无下属。Codeclass Solution { public int getImportance(List<Employee> employees, int id) { int sum = 0; // 存储所求员工重要性变量 Lin

2022-02-15 15:39:40 256

原创 有序数组中的单一元素

题目解题思路由于只有一个数只出现一次,其他数均出现两次,而且数组是有序的。因此在只出现一次的数之前,偶数位的数一定与后面相邻的奇数位的数相同。在该数之后,奇数位的数与后面相邻的偶数位的数相同(例如数组[1,1,2,3,3,4,4,8,8]中,序号2之前,nums[0] == nums[1],序号2之后,nums[3] == nums[4]等等)因此判断条件就是偶数位与后面相邻的奇数位是否相同,若相同,则表明要求的答案在当前结果的后面,否则,表明答案不在当前结果后面。给定一个序号

2022-02-14 22:55:32 494

原创 逆波兰表达式求值

题目解题思路运算规则为:运算符在式中出现的顺序恰为表达式的运算顺序;每个运算符和在它之前出现且紧靠它的两个操作数构成一个最小表达式。逆波兰表达式的输入最后加一个 # 表示输入的结束。建立一个存放 double 型数字的栈。用一个数组存放需要输入的操作数的每个字符(包括小数点),操作符和运算符之间用空格隔开。Codeclass Solution { public int evalRPN(String[] tokens) { Stack<Integer>

2022-02-11 21:10:13 280

原创 论文H指数

题目解题思路将数组按升序排序后,遍历数组后取当前值与剩余数组数量的较小值,即为H值Codeclass Solution { public int hIndex(int[] citations) { //特殊情况 if(citations==null || citations.length==0) return 0; //升序排列 Arrays.sort(citations); int h = 0;

2022-02-10 23:13:07 636

原创 和为K的最少斐波那契数字数目

题目解题思路观察题目,就可知道,想要确定最少数量,只需要依次取小于k的最大数字,直到匹配结果,得到所用的斐波契数字数字,这跟贪心算法是一个思路首先,创建一个动态大小的数组,来尽可能最小占用空间的调用内存。只需要储存到小于k的最大斐波契数字然后再创建循环通过贪心算法的思路,解出来答案Codeclass Solution { public int findMinFibonacciNumbers(int k) { if (k == 1 || k == 2) {

2022-02-09 21:51:04 790

原创 分组得分最高的所有下标

题目解题思路根据nums的下标分组,分成numsleft和numsright,其中numsleft的得分为区间内0的个数,而numsright的得分为区间内1的个数,而且nums[i]不是0就是1,所以可以先求出nuns[i]的前n项和。然后创建一个score数组,则score[i]是以i为下标进行分组的得分。可知numsright为1的个数,其实就是该区间内的和,因为nums[i]不是0就是1,比如[0,1,1]这个区间和为2,那么1的个数就是2。Codeclass Solution {

2022-02-08 20:07:38 429

原创 子域名访问计数

题目解题思路使用substring来分割字符串;使用entry来遍历map;在循环里用+连接字符串.Code class Solution { private Map<String, Integer> visitMap = new HashMap<>(); //使用Map的键值对来计数很方便 public List<String> subdomainVisits(String[] cpdomains)

2022-01-28 20:11:25 298

原创 第n个数字

题目解题思路1位数:1~9,共9个,占了19=9位;2位数:10~99,共90个,占了290=180位;3位数:100~999,共900个,占了3*900=2700位;……m位数:共9*100(m-1)个,占了m*9*100(m-1)位。具体步骤:确定n所在数字的位数,记为 digit;确定n所在的数字,记为 num;确定n是num中的哪一数位,并返回结果。Codeclass Solution { public int findNthDigit(in

2022-01-27 10:07:45 304

原创 按符号重排数组

题目解题思路思路很简单,只需要将数组的数字判断正负号后,依次按照一正一负的顺序填入到重组数组里Codeclass Solution { public int[] rearrangeArray(int[] nums) { //创建一个新数组,用于承装重排后的数组 int[] ans = new int[nums.length]; int idx1 = 0; int idx2 = 1; //创建两个指针,分别

2022-01-26 20:56:23 298

原创 统计隐藏数组数目

题目解题思路首先我们知道的是:这道题是让我们求数目,而不是求出来具体的数组所以说我们并不需要计算每一个数组是多少,只需要知道数组的上下限是多少从0执行一次传入数组differences[],从而储存min和max,求出数组的上下限然后判断是否满足在上下限之间即可Codeclass Solution { public int numberOfArrays(int[] differences, int lower, int upper) { long min = 0,

2022-01-25 16:42:55 160

原创 在线选举--java

题目解题思路把每一个投票以后的时刻的leader都算出来,然后供二分查询使用题目中所说的,平票时,最后一个出现的人为胜者思路是从0开始,每出一个时间判断是否有新的leader,利用好每次投票都只投一个人,所以俩数组大小相同Codeclass TopVotedCandidate{ int[] candidate;// 记录每位候选人的票数 int[] leaders;// 记录每次投票后的leader; int[] times; public TopVotedCandidat

2022-01-24 22:47:37 152

原创 最大数-java

题目解题思路对于两个数字a和b来说,如果将其都转为字符串,如果 ab > ba,则a排在前面。比如9和34,由于 934>349,所以9排在前面,再比如说 30 和3,由于 303<330,所以3排在 30 的前面。按照这种规则对原数组进行排序后,将每个数字转化为字符串再连接起来就是最终结果。Codeclass Solution { public String largestNumber(int[] nums) { int n=nums.len

2022-01-21 20:39:33 402

原创 找到需要补充粉笔的学生编号

题目解题思路先计算出次遍历所消耗的粉笔数,然后取余这样操作后,再次遍历即可得到结果Codeclass Solution { public int chalkReplacer(int[] chalk, int k) { // n个学生,编号0-n - 1 // 回答顺序 0 - n -1 // 共k支粉笔,消耗chalk[i],当剩余量小于时,补充粉笔,返回需要补充的编号 int n = chalk.length;

2022-01-20 21:47:16 254

原创 数组的子集

题目解题思路给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。思路 [1,2,3]对于长度为1的数组 其所有子集为 [] [1]对于长度为2的数组 其所有子集为[] [2] [1] [1,2]对于长度为3的数组 其所有子集为[][3] [2] [2,3] [1] [1,3] [1,2] [1,2,3]从以上规律可以总结出来对于长度为1的数组 其所有子集为 [] [num[0]]对于长度为2的数组 其所有子集为 长度为1的所有子集 + 长度为1的所有子集每个子集

2022-01-19 22:43:22 519

原创 求众数II

题目解题思路排序。外循环标记当前要统计次数的数字,内循环向后遍历统计次数。首先从第0个数字开始,内循环向后遍历,遇到相同的数字计数+1,直到找到第一个不同的数字退出内循环。统计出现次数是否满足众数的要求。内循环指针为j,此时j指向的是下一个数字的起始位Codeclass Solution { public List<Integer> majorityElement(int[] nums) { int majorityCount = nums.leng

2022-01-18 21:24:37 297

原创 数字转换为十六进制数

题目解题思路将原num通过每次右移4位,然后与运算1111,也就是15,这样就能得到每4位的值;然后找到对应Hex字符放到StringBuider();最后记得反转,以及去"0";Codeclass Solution { char[] hexArr = "0123456789abcdef".toCharArray(); public String toHex(int num) { StringBuilder sb = new StringBuilder(""

2022-01-17 21:48:53 3455

原创 第三大的数

题目解题思路通过for循环依次找到对应的第一大的数和第二大的数以及第三大的数对于其他情况如有等于的值,或者比第三大的数更小的值,都直接进入下个循环遍历所有即可Codeclass Solution { public int thirdMax(int[] nums) { //始终记录最大的三个数,[1,2,-2147483648],所以要用long long a = Long.MIN_VALUE;//最大 long b = Long.MI

2022-01-14 22:21:18 186

原创 至少是其他数字两倍的最大数

题目思路只需要比较比较最大数和第二大数,如果最大数要大于第二大数的两倍,则一定是大于其他数字两倍的最大值,反之,如果不成立,则不完全成立,返回-1即可。Codeclass Solution { public int dominantIndex(int[] nums) { if(nums.length==1) return 0; int index=-1; int max=Integer.MIN_VALUE; int second=Inte

2022-01-13 22:00:06 104

原创 递增的三元子序列

题目解题思路首先排除数组长度小于3的情况然后再 找出两个最小数 然后找一个比这个两个数的大的即可Codeclass Solution { public boolean increasingTriplet(int[] nums) { //bad-case if (nums.length < 2) { return false; } //先判断数组长度是否满足至少大于等于三,即三元的基本条件

2022-01-12 22:04:15 321

原创 全排列-递归思路

题目解题思路1.固定开始元素,剩下的元素进行全排列2.继续固定下一位元素,剩下的元素进行全排列3.递归终点为最后一个元素4.交换下一个元素,重复执行第一步,直到所有元素替换完成Codeclass Solution { //保存所有结果的集合 private List<List<Integer>> listNums = new ArrayList<>(); public List<List<Integer>&

2022-01-11 23:23:24 610

原创 尽可能使字符串相等

题目思路(滑动窗口)这道题需要将每个字符的开销用字符串等长的数组存储起来,并按滑动窗口的思想,得到可转化的最大长度滑动窗口核心思想:用两个指针start和end表示数组diff的子数组的开始下标和结束下标约束条件是:要满足子数组的元素和不超过maxCost。可以知道的是子数组的长度是:end-start+1.移动指针的原则:固定其中一个指针(如start指针),并逐步缩小移动指针的下标(即向左移动),直达刚满足条件,再移动一位固定指针,重复操作或者固定其中一个指针(如end指

2022-01-10 23:27:56 321

原创 猴子分香蕉

题目思路一求最开始最少香蕉数,我们根据分堆次序,可以知道如果最后一只猴子分成五份时,每只猴子分到的是m个香蕉,则最开始的香蕉数能满足条件且最少。第五只猴子分配时有m*5=5m个香蕉第四只猴子分配时有 5m*5/4+4第三只猴子分配时有 (5m*5/4+4)*5/4+3第二只猴子分配时有 ((5m*5/4+4)5/4+3)* 5/4+2第一只猴子分配时有 (((5m*5/4+4)5/4+3)* 5/4+2 )*5/4+1总数需要满足整数的条件,由此可以解出m的值

2022-01-08 16:18:09 501

原创 100阶乘的约数个数

题目思路约数的概念:约数就是因数。整数a除以整数b,除得的商正好是整数而没有约数,我们就说a能被b整除,或者b能整除a。a称为b的倍数,b称为a的约数。约数个数定理:想要使用约数个数定理,就需要将这个数分解成对应的质因子,然后取指数再+1相乘。在这道题中,我们统计100的阶乘可以分解成质因数的乘积,其中每个质因子出现的次数。将每个数的次数(arr[j])+1在乘积,即为所得约数解。Codepublic class Main { public static void

2022-01-08 15:38:47 1564

原创 跑步计算--Java

题目思路这道题代入计算即可Codeimport day1;import java.util.Arrays;public class Main { public static void main(String[] args) { int sum=10000; int flag = 1; int time = 0; while(sum+300>=600){ i

2022-01-08 10:56:48 465

原创 图书排序--Java

题目思路需要实现三个方法:检查是否编号相邻的书放在了相邻的位置的方法、元素交换位置的方法、排序的方法(调用元素交换位置的(swap())方法实现重新排序,再调用check方法判断新的排序是否符合条件)check(): 两个相邻的元素,如果它们的数字是相邻的,就是两个元素相减的绝对值 == 1,返回false即可swap(): 用位运算的方法,节省内存Codepackage day1; public class Main { static int res=0; publ

2022-01-08 10:50:53 381

原创 哥德巴赫猜想

题目思路需要创建三个方法:判断素数的方法、判断偶数符合哥德巴赫猜想的方法、判断一定范围内的数是否符合猜想的方法判断素数的方法是:创建循环来判断是否2~i-1之间有其因子(能被2整除),有则不是素数返回false,反之则返回true判断是否符合哥德巴赫猜想的方法:创建循环遍历,只要两个数之和为该偶数,且两数均为素数,则满足条件,符合哥德巴赫猜想Code//完整代码package day1;public class Main { public static boolean isPr

2022-01-08 10:34:32 412

原创 蓝桥杯--出栈次序

题目题目描述:X星球特别讲究秩序,所有道路都是单行线。一个甲壳虫车队,共16辆车,按照编号先后发车,夹在其它车流中,缓缓前行。路边有个死胡同,只能容一辆车通过,是临时的检查站,如上图所示。X星球太死板,要求每辆路过的车必须进入检查站,也可能不检查就放行,也可能仔细检查。如果车辆进入检查站和离开的次序可以任意交错。那么,该车队再次上路后,可能的次序有多少种?为了方便起见,假设检查站可容纳任意数量的汽车。思路f(1)=1f(2)=2 //12、21f(3)=5 //

2022-01-07 22:22:54 149 1

原创 猜数字游戏

题目解题思路这道题的思路就是:找公牛数和找奶牛数公牛数:判断两组字符串的相应位置字符是否相同,相同则公牛数加一。母牛数:分别统计除取公牛数后,每个数字在各自字符串中出现的次数,取两个字符串中共同出现的次数较小的作为这个数的母牛数,然后所有数的母牛数相加,则为总母牛数。这道题的一个关键也在于题中一句话:有多少位非公牛数通过重新排列组合能够变成公牛数 ,为求出奶牛数提供了思路。java语法知识以StringBuilder作为一种可变数据类型,创建链表。append()方

2022-01-07 20:50:22 1951

原创 Z字形变换

题目解题思路这道题的思路关键是: 使用StringBuilder类型因为 StringBuilder是一个可修改的字符串对象,StringBuilder类型的字符串可以增长或剪切。所以在进行解题时,只需要判断字符应该放在哪一行(哪一个StringBuilder)中,就把这个字符加到对应的StringBuilder中即可,也不需要说明放在StringBuilder的哪个位置 只需要append就行StringBuilder.append()。所以这道题的关注力只需要集中在哪

2022-01-06 22:13:04 517

原创 向字符串添加空格

题目解题思路这道题的思路主要是:切片分段 到 每段后添加空格,最后进行 拼接的过程。java语法知识StringBuffer的实例化对象的创建。append()方法、substring()方法、toString()方法的使用。substring(beginIndex,endIndex)方法是:返回字符串的子字符串(起始索引位置到终止索引位置)关键代码解释 sb.append(s.substring(start,spaces[i])).append(" ");这行代码主要实现了

2022-01-05 22:21:06 8516

原创 Excel表列名称

题目解题思路首先,可以先去写一下这道题的伴生题,Excel表的列序号。即给你列名称来求列序号。题的本质可以看做是26进制数与10进制数之间的转化,在算法的设计语句和计算上,亦是如此。理解了Excel表的列序号是26进制数转化成10进制数,就知道了Excel的列名称就是10进制数转化成26进制数。在计算方法上与2进制与10进制数的转化没有区别。java语法知识StringBuffer的实例化对象的创建。append()方法、reverse()方法、toString()方法的使用。关键代

2022-01-04 16:12:14 1005

原创 错误的集合

错误的集合—题目解题思路(哈希表法)重复的数字在数组中出现两次,丢失的数字在数组中出现0次。其余的每个数字在数组中出现一次。因此,可以使用哈希表记录每个元素在数组中出现的次数,然后遍历从1到n的每个数字,分别找到出现2次和出现0次的数字,即为重复的数字和丢失的数字所需知识创建HashMap的实例化对象map.put() 方法、getOrDefault()方法的使用。代码及运行结果class Solution{ public int[] findErrorNums(i

2022-01-03 21:06:53 267

原创 验证回文字符串 Ⅱ

题目-验证回文字符串 Ⅱ解题思路先考虑正常回文串的思路:采用双指针,定义左右指针,初始时指向第一个和最后一个字符,每次判断左右指针的值是否相同,所有都相同则是回文串,这就可以是方法一。对于需要删除一个字符的情况下,同样可以使用双指针,依然是最左和最右两个指针,左右比对,移动指针,然后找到左右指针不同处,分情况删除其中一个对应字符。并调用方法一,判断分情况的字符是否是回文串。代码class Solution{ public boolean validPalindrome(String s){

2021-12-31 16:01:28 220

原创 提莫攻击算法

题目解题思路

2021-12-30 22:03:00 2498

原创 两数之和II

题目描述给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: numbers = [2, 7, 11, 15], target = 9输出: [1,2]解释: 2 与 7 之和等于目标数 9 。因此 index1 = 1,

2021-12-29 22:21:33 237

原创 有效的括号字符串

题目给定一个只包含三种字符的字符串:( ,) 和 *,写一个函数来检验这个字符串是否为有效字符串。有效字符串具有如下规则:任何左括号 ( 必须有相应的右括号 )。任何右括号 ) 必须有相应的左括号 ( 。左括号 ( 必须在对应的右括号之前 )。*可以被视为单个右括号 ) ,或单个左括号 ( ,或一个空字符串。一个空字符串也被视为有效字符串。思路这道题我一直没写对,难受死了,最后发现是考虑漏了情况。我最开始的思路是,统计左括号,然后t++;统计右括号,t–;额外统计*号。这

2021-12-28 17:47:07 690

原创 螺旋矩阵 II

题目给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。示例 1:输入:n = 3输出:[[1,2,3],[8,9,4],[7,6,5]]示例 2:输入:n = 1输出:[[1]]思路这个问题可以分层考虑,只需要完整表示出最外面一层,内层只需要通过循环就可以逐层实现而最外一层,只需要考虑“从左到右一行”、“从上到下一列”、“从右到左一行”、“从下到上一列”四个方向,即可解决一层。代码class Solu

2021-12-27 21:23:27 196

空空如也

空空如也

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

TA关注的人

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