自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

CodingLJ

种树最好的时机是十年前,其次是现在。

  • 博客(85)
  • 收藏
  • 关注

原创 【链表】【打卡127天】:leetcode 2. 两数相加

1、题目描述给你两个非空 的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0开头。2、算法分析本题求的是两个链表结点值的和,并且它们每位数字都是按照逆序的方式存储的。求逆序结点算式和组成的新的链表。分为以下几个步骤。①创建一个结果链表②遍历l1,l2链表③并计算进位的数、某位的数,并连接链表④...

2021-11-30 16:15:02 136

原创 【字符串】【打卡126天】:leetcode 9. 回文数

1、题目描述给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。2、算法分析本题比较简单,双指针解法。先将int整数转换成字符串,双指针判断是否相等即可。3、代码实现class Solution { public boolean isPalindrome(int x) { String s = String.

2021-11-30 13:46:09 149

原创 【字符串】【打卡125天】:leetcode 205. 同构字符串

1、题目描述给定两个字符串s和t,判断它们是否是同构的。如果s中的字符可以按某种映射关系替换得到t,那么这两个字符串是同构的。每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。2、算法分析题目说的是判断两个字符串s和t,判断它们是否是同构的。本题使用的是Map映射。也就是说 add-->egg,a映射e,d映射g。根据题目中给的示例,o重复的一定...

2021-11-30 13:04:02 171

原创 【字符串】【打卡124天】:leetcode 409. 最长回文串

1、题目描述给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。在构造过程中,请注意区分大小写。比如"Aa"不能当做一个回文字符串。注意:假设字符串的长度不会超过 1010。输入示例:输入:"abccccdd"输出:7解释:我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。2、算法分析回文字符串,简单的说是对称的字符串,就是正着读和反着读都是一样的字符串。要想获取最长的回文子串,需要有足够多的偶数对应的字符..

2021-11-30 12:00:08 669

原创 【字符串】【打卡123天】:leetcode 13. 罗马数字转整数

1、题目描述罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做II,即为两个并列的 1 。12 写做XII,即为X+II。 27 写做XXVII, 即为XX+...

2021-11-29 16:03:31 96

原创 【算法技巧】int[] count = new int[26]; count[s.charAt(i) - ‘a‘]++;

int[] count = new int[26]; for(int i = 0;i < s.length();i++){ count[s.charAt(i) - 'a']++; }int是32位的,英文字母有26个。所以可以使用int[] count = new int[26];存储字符串中出现字母。具体的话,count[s.charAt(i) - 'a']:s.charAt(i) - 'a',求字母之间的a...

2021-11-28 23:23:52 3398

原创 【字符串】【打卡122天】:242. 有效的字母异位词

1、题目描述给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。注意:若s 和 t中每个字符出现的次数都相同,则称s 和 t互为字母异位词。2、算法分析int是32位的,英文字母有26个。所以可以使用int[] count = new int[26];存储字符串中出现字母的个数。具体的话,count[s.charAt(i) - 'a']:s.charAt(i) - 'a',求字母之间的ascell之间的差值。小写字母asell范围:a-z...

2021-11-28 23:18:42 1137

原创 【动态规划】【打卡121天】:背包理论基础

1、背包理论基础 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i]。每件物品只能用一次,求解将哪些物品装入背包里物品价值最大。其实这是标准的背包问题。每一件物品有2种状态,取物品放入背包中,不取该物品放入背包中。所以可以使用回溯法搜索出所有的情况,那么时间复杂度就是O(2^n),这里的n表示物品数量。2、算法分析①确定dp数组以及下标的含义对于背包问题,有一种写法, 是使用二维数组。即dp[i][...

2021-11-28 22:24:39 1789

原创 【字符串】【打卡120天】:leetcode 151. 翻转字符串里的单词

1、题目描述给你一个字符串 s ,逐个翻转字符串中的所有 单词 。单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。请你返回一个翻转 s 中单词顺序并用单个空格相连的字符串。说明:输入字符串 s 可以在前面、后面或者单词间包含多余的空格。翻转后单词间应当仅用一个空格分隔。翻转后的字符串中不应包含额外的空格。2、算法分析分为三步走:①去掉字符串首尾的空格②反转整个字符串③反转字符串中的每个单词注意:在去掉每个单词之间.

2021-11-27 16:43:37 147

原创 【字符串】【打卡119天】:leetcode 541. 反转字符串 II

1、题目描述给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。如果剩余字符少于 k 个,则将剩余字符全部反转。如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。2、算法分析每隔k个反转k个,剩余少于k个全部反转。剩余大于k个小于2k个,反转前k个,剩余不变。也就是每个k个反转k个。3、代码实现import java.util.*;class Solution.

2021-11-26 23:54:58 225

原创 【字符串】【打卡118天】:leetcode 344. 反转字符串

1、题目描述编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。2、算法分析有时间好好总结下反转的算法。①链表的反转②数组的反转③二叉树的反转④字符串的反转本题思路比较简单。转过来就行了。for循环,或者双指针。3、代码实现class Solution { public void reverseString(char

2021-11-26 22:11:51 78

原创 【动态规划】【打卡117天】:《剑指Offer》 2刷:JZ42 连续子数组的最大和

1、题目描述输入一个长度为n的整型数组array,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。数据范围:1 <= n <= 10^51<=n<=105-100 <= a[i] <= 100−100<=a[i]<=100要求:时间复杂度为O(n)O(n),空间复杂度为O(n)O(n)进阶:时间复杂度为O(n)O(n),空间复杂度为O(1)O(1)2、算法分析题目求的是连续子数组中元素和的最大...

2021-11-26 18:35:41 418

原创 【动态规划】【打卡116天】:leetCode96. 不同的二叉搜索树

1、题目描述给你一个整数n,求恰由n个节点组成且节点值从1到n互不相同的二叉搜索树有多少种?返回满足题意的二叉搜索树的种数。2、算法分析来看看n为3的时候,有哪几种情况。当1为头结点的时候,其右子树有两个节点,看这两个节点的布局,是不是和 n 为2的时候两棵树的布局是一样的啊!确实有重复重叠的关系!当3为头结点的时候,其左子树有两个节点,看这两个节点的布局,是不是和n为2的时候两棵树的布局也是一样的啊!当2位头结点的时候,其左右子树都只有一个节点,布局是不是...

2021-11-26 18:04:14 686

原创 【二叉树】【打卡115天】leetCode每日一题:700. 二叉搜索树中的搜索

1、题目描述给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。2、算法分析使用递归。题目说的是二叉搜索树,也就是有序的。当前结点的值大于左子树的结点值。当前结点值小于右子树的任意结点值。使用递归找到对应的的结点即可。return searchBST(root.val < val ? root.right : root.left,val);看下TreeNode的定义:

2021-11-26 12:00:13 189

原创 【动态规划】【打卡114天】《剑指Offer》2刷:变态跳台阶:JZ71 跳台阶扩展问题

1、题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶(n为正整数)总共有多少种跳法。2、算法分析一只青蛙一次可以跳1级,2级,...n级的台阶。求跳n阶台阶共有多少种跳法。像这种计数的题目;比如多少种方式,多少种方法。都可以使用dp方法解题。之前做过一道基础的题目,但是只能是跳1级或者2级。也就是看最后一步。f[i] = f[i-1] + f[i-2];本题:青蛙可以跳1级,2级,...n级的台阶,所以分为5步走:

2021-11-25 22:22:47 319

原创 【动态规划】【打卡113天】《剑指Offer》2刷:JZ70 矩形覆盖

1、题目描述我们可以用 2*1 的小矩形横着或者竖着去覆盖更大的矩形。请问用 n 个 2*1 的小矩形无重叠地覆盖一个 2*n 的大矩形,从同一个方向看总共有多少种不同的方法?数据范围:进阶:空间复杂度,时间复杂度注意:约定 n == 0 时,输出 0比如n=3时,2*3的矩形块有3种不同的覆盖方法(从同一个方向看):2、算法分析(1)当 n < 1时,显然不需要用2*1块覆盖,按照题目提示应该返回0。(2)当n =1时,只存在一种情况。...

2021-11-25 19:53:52 251

原创 【动态规划】【打卡112天】:leetCode 343. 整数拆分

1、题目描述给定一个正整数n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。2、算法分析这题类似于【动态规划】【打卡93天】《剑指Offer》2刷:减绳子_CodingLJ-CSDN博客剪绳子这个题几乎一样。①确定dp数组(dp table)以及下标的含义dp[i]:分拆数字i,可以得到的最大乘积为dp[i]。dp[i]的定义讲贯彻整个解题过程,下面哪一步想不懂了,就想想dp[i]究竟表示的是啥!②确定递推公式可以想 dp[i.

2021-11-25 18:16:43 486

原创 【动态规划】【打卡111天】:leetcode 63. 不同路径 II

1、题目描述一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用1和0来表示。2、算法分析上一题是没有障碍的情况,求出到达最右下角的网格有多少种走法。本题是到达终点期间有障碍物。且障碍物和空位置分别用1和0来表示。步骤如...

2021-11-25 10:42:43 97

原创 【动态规划】【打卡110天】:leetcode 746. 使用最小花费爬楼梯

1、题目描述数组的每个下标作为一个阶梯,第 i 个阶梯对应着一个非负数的体力花费值cost[i](下标从 0 开始)。每当你爬上一个阶梯你都要花费对应的体力值,一旦支付了相应的体力值,你就可以选择向上爬一个阶梯或者爬两个阶梯。请你找出达到楼层顶部的最低花费。在开始时,你可以选择从下标为 0 或 1 的元素作为初始阶梯。2、算法分析每当你爬上一个阶梯你都要花费对应的体力值,一旦支付了相应的体力值,你就可以选择向上爬一个阶梯或者爬两个阶梯。上一步影响着下一步的走向。动态规划!①确.

2021-11-24 23:49:29 160

原创 【动态规划】【打卡109天】:leetcode 70. 爬楼梯

1、题目描述假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定n是一个正整数。2、算法分析多举几个例子。就会发现规律。最重要的是最后一步之前有几种方式能到达最后一步!!!爬到第一层楼梯有一种方法,爬到二层楼梯有两种方法。那么第一层楼梯再跨两步就到第三层 ,第二层楼梯再跨一步就到第三层。所以到第三层楼梯的状态可以由第二层楼梯 和 到第一层楼梯状态推导出来,那么就可以想到动态规划了。下面分...

2021-11-24 19:36:52 103

原创 【动态规划】【打卡108天】:leetcode 509. 斐波那契数

1、题目描述斐波那契数,通常用F(n)表示,形成的序列称为斐波那契数列。该数列由0和1开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0,F(1)= 1F(n) = F(n - 1) + F(n - 2),其中 n > 1给你n,请计算F(n)。2、算法分析可以说,这是一道经典的题目,可以用递归做,但是这次我们使用DP来解。、DP分为5个步骤:①确定dp数组以及下标的含义。本题dp数组的定义为:第...

2021-11-24 17:05:17 239

原创 【字符串】【打卡107天】leetCode每日一题:859. 亲密字符串

1、题目描述给你两个字符串 s 和 goal ,只要我们可以通过交换 s 中的两个字母得到与 goal 相等的结果,就返回true;否则返回 false 。交换字母的定义是:取两个下标 i 和 j (下标从 0 开始)且满足 i != j ,接着交换 s[i] 和 s[j] 处的字符。例如,在 "abcd" 中交换下标 0 和下标 2 的元素可以生成 "cbad" 。2、算法分析分为以下几种情况:①如果s.length() != goal.length() 长度不相等,返...

2021-11-23 23:46:43 747

原创 【动态规划】【打卡106天】:62. 不同路径

1、题目描述一个机器人位于一个 m x n网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?2、算法分析题目说的是,给定m行n列的网格,有一个机器人从左上角(0,0)出发,每一步可以向下,也可以向右。问有多少种不同的方式。最后一步:无论机器人用何种方式到右下角,总有最后挪动的一步:向右或者想下。 ...

2021-11-23 19:38:49 1011

原创 【动态规划】【打卡105天】:剑指 Offer II 103. 最少的硬币数目

1、题目描述给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回-1。你可以认为每种硬币的数量是无限的。2、算法分析动态规划题目特点:①计数 有多少种方式走到右下角;有多少种方法选出k个数的和为sum;②求最大最小值 从左上角走到右下角的最大数字和; 最长上升子序列的长度; ③求存...

2021-11-23 18:17:16 652

转载 【详解】归并排序(分治思想)

1、基本思想归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。可以看到这种结构很像一棵完全二叉树,本文的归并排序我们采用递归去实现(也可采用迭代的方式去实现)。分阶段可以理解为就是递归拆分子序列的过程,递归深度为log2n。2、合并相邻有序子序...

2021-11-22 20:46:53 1011

原创 【数组】【打卡104天】《剑指Offer》2刷:JZ51 数组中的逆序对

1、题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P mod1000000007数据范围: 对于50\%50%的数据,size\leq 10^4size≤104对于100\%100%的数据,size\leq 10^5size≤105数组中所有数字的值满足0 \le val \le 10000000≤val≤1000000要求:空间复杂度...

2021-11-22 20:33:58 132

原创 【数组】【打卡103天】《剑指Offer》2刷:JZ53 数字在升序数组中出现的次数

1、题目描述给定一个长度为 n 的非降序数组和一个非负数整数 k ,要求统计 k 在数组中出现的次数数据范围:0 \le n \le 1000 , 0 \le k \le 1000≤n≤1000,0≤k≤100,数组中每个元素的值满足0 \le val \le 1000≤val≤100要求:空间复杂度O(1)O(1),时间复杂度O(logn)O(logn)2、算法分析一个for循环就可以了。但是效率非常低。另一种方法使用的是二分查找。找到array[mid] == k。然后...

2021-11-22 14:22:27 1109

原创 【二分查找】【打卡102天】《剑指Offer》2刷:JZ11 旋转数组的最小数字

1、题目描述有一个长度为 n 的非降序数组,比如[1,2,3,4,5],将它进行旋转,即把一个数组最开始的若干个元素搬到数组的末尾,变成一个旋转数组,比如变成了[3,4,5,1,2],或者[4,5,1,2,3]这样的。请问,给定这样一个旋转数组,求数组中的最小值。数据范围:1 \le n \le 100001≤n≤10000,数组中任意元素的值:0 \le val \le 100000≤val≤10000要求:空间复杂度:O(1)O(1),时间复杂度:O(logn)O(logn)2、..

2021-11-22 13:23:48 106

原创 【动态规划】【打卡101天】《剑指Offer》2刷:121. 买卖股票的zui jia时机

1、题目描述给定一个数组 prices ,它的第i 个元素prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。2、算法分析典型的dp动态规划思想。1、记录今天之前买入的最小值2、计算几天之前最小值的买入,今天卖出的利润,计算几天卖出的最大利润3、比较每天的最大利润,取最大的..

2021-11-22 12:28:29 208

原创 【树】【打卡100天】leetCode每日一题:559. N 叉树的最大深度

1、题目描述给定一个 N 叉树,找到其最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。N 叉树输入按层序遍历序列化表示,每组子节点由空值分隔(请参见示例)。2、算法分析大家应该做过二叉树的最大深度。也是使用的是Math.max()Math.max(deep(root.left),deep(root.right)) + 1;注意:Node的数据结构代码,它有孩子结点。class Node { public int val; publ

2021-11-21 21:51:30 259

原创 【排序】【打卡99天】《剑指Offer》2刷:JZ45 把数组排成最小的数

1、题目描述输入一个非负整数数组numbers,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组[3,32,321],则打印出这三个数字能排成的最小数字为321323。1.输出结果可能非常大,所以你需要返回一个字符串而不是整数2.拼接起来的数字可能会有前导 0,最后结果不需要去掉前导 0数据范围:0<=len(numbers)<=1002、算法分析首先对整型数组中的元素转换成String字符串类型的数组元素。然后对字符串数.

2021-11-21 15:18:45 412

原创 【排序】【打卡98天】《剑指Offer》2刷:JZ21 调整数组顺序使奇数位于偶数前面(一)

1、题目描述输入一个长度为 n 整数数组,数组里面不含有相同的元素,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前面部分,所有的偶数位于数组的后面部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。数据范围:0 \le n \le 50000≤n≤5000,数组中每个数的值0 \le val \le 100000≤val≤10000要求:时间复杂度O(n)O(n),空间复杂度O(n)O(n)进阶:时间复杂度O(n^2)O(n2),空间复杂度O(1)O(1)...

2021-11-21 13:21:41 792

原创 【数学】【打卡97天】《剑指Offer》2刷:JZ62 HZ们的游戏(圆圈中最后剩下的数)

1、题目描述每年六一儿童节,牛客都会准备一些小礼物和小游戏去看望孤儿院的孩子们。其中,有个游戏是这样的:首先,让 n 个小朋友们围成一个大圈,小朋友们的编号是0~n-1。然后,随机指定一个数 m ,让编号为0的小朋友开始报数。每次喊到 m-1 的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0...m-1报数....这样下去....直到剩下最后一个小朋友,可以不用表演,并且拿到牛客礼品,请你试着想下,哪个小朋友会得到这份礼品呢?2、算..

2021-11-21 12:40:49 3563

原创 【数组】【打卡96天】《剑指Offer》2刷:JZ39 数组中出现次数超过一半的数字

1、题目描述给一个长度为 n 的数组,数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组[1,2,3,2,2,2,5,4,2]。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。数据范围:n \le 50000n≤50000,数组中元素的值0 \le val \le 100000≤val≤10000要求:空间复杂度:O(1)O(1),时间复杂度O(n)O(n)输入描述:保证数组输入非空,且保证有解。2、算法分析一句...

2021-11-20 23:54:25 283

原创 【数组】【打卡95天】《剑指Offer》2刷:JZ56 数组中只出现一次的两个数字

1、题目描述一个整型数组里除了两个数字只出现一次,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。数据范围:数组长度2\le n \le 10002≤n≤1000,数组中每个数的大小0 < val \le 10000000<val≤1000000要求:空间复杂度O(1)O(1),时间复杂度O(n)O(n)2、算法分析首先题目中要求的是两个只出现一次的数字,输出时按非降序输出,也就是正序输出。首先对数组进行排序。使用Map函数,注意,实现类是Li...

2021-11-20 23:19:17 136

原创 【位运算】【打卡94天】《剑指Offer》2刷:JZ15 二进制中1的个数

1、题目描述输入一个整数 n ,输出该数32位二进制表示中1的个数。其中负数用补码表示。数据范围:- 2^{31} <= n <= 2^{31}-1−231<=n<=231−1即范围为:-2147483648<= n <= 2147483647−2147483648<=n<=21474836472、算法分析知识补充:①将字符串转换为字符数组char[] ch = str.toCharArray();②将十进制转换为二进制:..

2021-11-20 20:38:44 357

原创 【动态规划】【打卡93天】《剑指Offer》2刷:减绳子

1、题目描述给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m-1] 。请问 k[0]*k[1]*...*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。2、算法分析题目中说长度为n的绳子剪成m段。且n>1 m>1。定义dp数组,dp[i]表示长度为i的绳子剪成m端后长度的最大乘积(m&.

2021-11-20 20:15:39 263

原创 【数组】【打卡92天】leetCode每日一题:594. 最长和谐子序列

1、题目描述和谐数组是指一个数组里元素的最大值和最小值之间的差别 正好是 1 。现在,给你一个整数数组 nums ,请你在所有可能的子序列中找到最长的和谐子序列的长度。数组的子序列是一个由数组派生出来的序列,它可以通过删除一些元素或不删除元素、且不改变其余元素的顺序而得到。2、算法分析本题使用的是双指针解法,首先对数组元素进行排序。定义第一个指针指向的是数组的第一个元素。for循环进行遍历数组,while(nums[end]-nums[start] > 1)的时候,sta

2021-11-20 13:20:56 109

原创 【数学】【打卡91天】《剑指Offer》2刷:JZ43 整数中1出现的次数(从1到n整数中1出现的次数)

1、题目描述输入一个整数 n ,求 1~n 这 n 个整数的十进制表示中 1 出现的次数例如, 1~13 中包含 1 的数字有 1 、 10 、 11 、 12 、 13 因此共出现 6 次注意:11 这种情况算两次2、算法分析题目中要求的是1—n的整数中,出现1次数的总和。不妨把n转换成字符串,再将字符串转换为字符数组。只需要while(n>0),对字符数组中的字符,判断是否为1即可。知识补充:1、将其他类型转换为字符串类型:String.valueOf().

2021-11-19 23:32:01 263

原创 【最优解】【打卡90天】leetCode每日一题:397. 整数替换

1、题目描述给定一个正整数n ,你可以做如下操作:如果n是偶数,则用n / 2替换n 。如果n是奇数,则可以用n + 1或n - 1替换n 。n变为 1 所需的最小替换次数是多少?2、算法分析因为题目中给的范围是:1 <= n <= 2^31- 1,所以使用long类型。给定一个正整数n,你可以做如下操作:如果n是偶数,则用n / 2替换n。 如果n是奇数,则可以用n + 1或n - 1替换n。注意n为奇数:...

2021-11-19 23:06:50 537

空空如也

空空如也

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

TA关注的人

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