自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

softstarhhy的专栏

盖世英雄

  • 博客(106)
  • 资源 (1)
  • 收藏
  • 关注

原创 LintCode第116题-跳跃游戏

/ 扩展最远可达 关键是当前的下标位置+可跳的步数i + a[i] 注意不是累加步数。//状态转移dp[i]=dp[i-1]&&(a[j]>=(j-i));//a[j]的长度指的是跳跃的最大长度i>=1 i代表其实位置 j代表终点的位置。4.边界条件/遍历顺序/答案 i 从小到大,j 在 [0, i-1] dp[n-1];2.状态转移方程dp[i]=dp[j]&&a[j]>=(i-j) 其中 i>=j。if(a==null||a.length==0) //边界条件。

2025-08-16 12:39:54 241

原创 LintCode第107题-单词拆分-新版

/minWordLength:保证不检查比任何词都短的片段 → 可以提前从 i=minWordLength 开跑,//并收紧 j 的终点 剪枝截取片段是从j至i。就是存在某个 j(0 ≤ j < i),使得前缀 s[0..j) 可拆且最后一段 s[j..i) 在字典里,那么 dp[i] 为真。//dp[0]=空串,dp[4]=整串结果 →自然是 n+1 即dp[]数组是状态表示 表示长度为。dp[i] = OR_{j<i}( dp[j] && inDict(s[j..i)) ) OR即逻辑或。

2025-08-15 13:50:26 450

原创 lintCode第1835题-停在原地的方案数1

public int numWays(int steps, int arrLen) {//最终返回的是dp[steps][0]val=val+dp[s-1][p-1];p++)//p表示位置。状态dp[steps][0] 其中状态就是循环的两个条件 用来计算所有的方案数。的操作序列总数最多是 3^15(每步 3 种:左/右/不动)。//初始化 dp[0][0]=1 其余为0。//状态dp[steps][0]

2025-08-13 14:27:34 899

原创 LintCode第1526-N叉树的前序遍历

/清空访问的结果 对于多次调用preorder是必不可少的。// 清空上次的结果。为保证和递归一样的“从左到右”顺序,这里反向入栈 由于栈有先进后出的特性 所以需要反转。// 前序:先访问自己。// 已访问过就跳过。给定一个 N 叉树,返回其节点值的前序遍历。思路:该题使用递归法或者迭代法。这棵树如下所示(左侧的)

2025-08-12 14:33:00 531

原创 LintCode第1181题-二叉树的直径

public void inorderAndUpdate(TreeNode treeNode) { //计算每个点的最长路径的长度 其中只需访问所有的节点 每个节点的高度上一步已经计算好。第二种速度快直观:直接使用后序遍历在遍历的同时 会计算出每一个节点的高度 会一次性的计算出该节点的直径值 即一次遍历即可求出最长的二叉树的直接(因为将第一种方法的两步放在一块了 原因是由于。后序遍历的天然特性 在访问最终根节点前 左右子树的高度都已经被访问 即可以在访问根节点的同时拿到左右子树的高度。

2025-08-11 15:28:56 659

原创 LintCode第604题-滑动窗口内数的和

j++)//双指针法 扩窗累加(右指针 j 往右走)currentSum=currentSum-nums[i];//适当的减少 减去最前面一位 即写完收缩。给你一个大小为n的整型数组和一个大小为k的滑动窗口,将滑动窗口从头移到尾,输出从开始到结束每一个时刻滑动窗口内的数的和。//统计返回数组的长度大小。}else if(j-i+1==k) //窗口满足长度 k 时记录答案。//统计累加和 符合条件就记录 不符合记录进行累加和适当的减少。

2025-08-10 15:23:42 399

原创 unity中如何让原人物动画兼容新人物的动画

Avatar 是绿色有效的(Configure 骨骼映射全绿,姿态为 Unity 认可的 T-Pose),运行时 Animator 组件也要引用正确的 Avatar,这样 Unity 才能把动作映射到新骨骼上。同样 Avatar 绿色有效,这样动画才能转成“抽象人体部位动作”,可跨模型重定向。预览时要在右下角窗口绑定新人物的。

2025-08-10 11:31:19 238

原创 LintCode第547题-两数组的交集

/下面两句时间复杂度为O(m+n)for (Integer v : smallSet) //时间复杂度为O(min(m, n))for (Integer v : smallSet)// 时间复杂度为O(min(m, n))// 【新增】先数一遍真实交集个数(保持你的双循环+break 结构)// 选小集合作为外层,contains 判交集 通过判断可以判断是返回的长度。则最终时间复杂度为Math.max(O(min(m, n)),O(m+n))即O(m+n)为什么会变成这样 因为。

2025-08-09 21:30:22 481

原创 LintCode第433题-岛屿的个数

/因为这里的岛屿不为锯齿状即规则二维数组 所以可以用grid[0].length计算出来所有的列都为这个值。private void dfsSurroundIsland(boolean[][] g, int r, int c)//消灭上下邻接重复的岛屿 这一片岛屿只算1次。g[r][c])//g[r][c]表示 如果是海洋的话就停止了。if(grid[r][c])//首次遇见一个小岛。// 上、下、左、右(顺序固定)

2025-08-08 15:18:16 359

原创 LintCode第397题-最长上升连续子序列

表示整个数组的规模),请找出该数组中的最长上升连续子序列。(最长上升连续子序列可以定义为从右到左或从左到右的序列。,因为只要连续性断了(不满足递增/递减),我们就自动地从当前元素开始重新统计,就等价于“从新起点开始”思路: 看见子序列 最长 首先想到动态规划 动态规划(DP)通常用来解决。//注意要是连续的 而且可以从左至右 也可以从右至左。//注意要是连续的 而且可以从左至右 也可以从右至左。在 O(n) 的遍历中,

2025-08-07 12:15:31 838

原创 LintCode第45题-最大子数组差

45 · 最大子数组差描述给定一个整数数组,找出两个不重叠的子数组A和B,使两个子数组和的差的绝对值∣SUM(A)−SUM(B)∣最大。返回这个最大的差值。子数组最少包含一个数子数组是数组中的一个,并且固定地保持数组元素的顺序样例6解释:子数组是 [1,2] 和[-3].所以答案是 6.1解释:子数组是 [0] 和 [-1].所以答案是 1.挑战时间复杂度为O(n),空间复杂度为O(n):首先我们判断该题属于哪种类型题题目关键字是子数组-通常是连续的一段数组。

2025-08-05 17:39:21 796

原创 lintCode第65题- 两个排序数组的中位数

B[0], B[1], B[2] 中至少有一个比 A[2] = 5 大(比如 B[2] = 6),而 A[0~2] 全部 ≤ 5。getKth(A, start1=0, end1=2, B, start2=2, end2=2, k=3) 这时候的下标索引是。k等于5等于找第5小的元素 那么A B的k/2个元素 k/2=1 即为A[k/2]=A[1]=4 A[k/2]=B[1]=3。合并后的数组为[1,2,2,3,3,4,4,5,5,6],中位数为(3 + 4) / 2。

2025-08-04 16:11:42 710

原创 LintCode第29题-交叉字符串

描述给出三个字符串s1s2s3,判断s3是否由s1和s2交叉构成。true解释:s3 是由 s1 与 s2 交叉构成。false解释:s3 不是由 s1 与 s2 交叉构成。false解释:s3 不是由 s1 与 s2 交叉构成。思路:核心是s3字符串是否由s1和s2。

2025-08-03 14:18:05 575

原创 LintCode第104题-合并k个排序链表

/通过不停的比较 拿到当前所有list列表的最小值的节点。public ListNode mergeKLists(List<ListNode> allLists)//其中mergeKLists是平台要求必须以其为名。//虚节点 没有任何意思 只是为了操作方便 类似于单链表的头结点 方便数据的操作。将2->6->null、5->null和7->null合并成一个升序的链表。将2->4->null、null和-1->null合并成一个升序的链表。//双链表的插入 由于题目已知每个链表是升序的。

2025-07-16 14:32:36 883

原创 LintCode第102题-带环链表

/即每次第一个节点走两步 如果是环终将追击上第二个节点 因为第二个节点走的慢每次走一步。除了使用快慢指针外 还有一种穷举的方法 因为题目告诉了不超过1000的长度 所以。思路:两种方法 第一种使用快慢指针法 也就是双指针法 第二种是穷举法。//如何判断一轮结束呢 通过计数器1000来判断。给定一个链表,判断它是否有环。链表长度不超过10000。

2025-06-26 16:24:50 332

原创 LintCode第42题-最大子数组 II-使用前缀和优化 + 动态规划法

描述给定一个整数数组,找出两个 不重叠 子数组使得它们的和最大.每个子数组的数字在数组中的位置应该是连续的.返回最大的和子数组最少包含一个数样例 1:输入:输出:解释:最大的子数组为 [1, 3] 和 [2, -1, 2] 或者 [1, 3, -1, 2] 和 [2].样例 2:输入:输出:解释:最大的子数组为 [5] 和 [4].挑战要求时间复杂度为 O(n)上一篇提到:动态累加和 + 最大子数组和这一篇使用前缀和优化 + 动态规划思路:通过不重叠以及如何计算

2025-05-19 14:21:30 597

原创 LintCode第42题-最大子数组 II

最大的子数组为 [1, 3] 和 [2, -1, 2] 或者 [1, 3, -1, 2] 和 [2].前缀和快速计算 左侧最大子数组和 和 右侧最大子数组和,从而找到两个不重叠子数组的最大和。//依次遍历两个左子数组和右子数组 得到其组合的最大值即为最大的返回值。每个子数组的数字在数组中的位置应该是连续的。// 计算最大不重叠子数组和。// 左侧最大子数组和。// 右侧最大子数组和。最大的子数组为 [5] 和 [4].动态累加和 + 最大子数组和。子数组使得它们的和最大。主要分为两种解题方法。

2025-05-12 22:15:38 447

原创 LintCode第4题-丑数 II

/返回的时候要 1 2 3 5才能算是丑数 由于已经把特殊的1包含进去了 所以只需要判断2 3 5即可。//1对应的返回值为0。//更新指针:确保没有重复 注意这里的确保意思为。[1,2,3,4,5,6,8,9,10,....],第9个丑数为10。//第一个丑数是 1。//返回的时候要 1 2 3 5才能算是丑数。确保每次生成的 “下一个丑数” 是 唯一且最小的。//除的时候要是 2 3 5。:表示所有已生成丑数中,下一个乘以。//除的时候要是 2 3 5。

2025-05-11 12:42:23 496

原创 LintCode第807题-回文数II

2.利用左右双指针进行同步检查 如果有不相同的字符则不是回文数 当循环结束后如果都相同则是回文数。1.将n以2进制的求余 得到每一次最低位的二进制数 然后再将其逆序排序 就会得到正确的二进制数。//n起始数字转化为二进制。//左右比较即会问比较。的二进制表示是否为回文数。

2025-05-11 10:42:23 426

原创 LintCode第241题转换字符串到整数(容易版),133题最长单词,771题-二阶阶乘

给一个字符串, 转换为整数。你可以假设这个字符串是一个有效整数的字符串形式, 且范围在32位整数之间 (-231 ~ 231 - 1)。表示不超过这个正整数且与它有相同奇偶性的所有正整数乘积。,返回该数的二阶阶乘。给一个词典,找出其中所有最长的单词。转换字符串到整数(容易版)

2025-05-11 10:38:29 910

原创 LintCode第485题-生成给定大小的数组,第220题-冰雹猜想,第235题-分解质因数

对于任意一个自然数N,如果N是偶数,就把它变成N / 2;数学家们曾提出一个著名的猜想——冰雹猜想。如果N是奇数,就把它变成 3 * N+1。按照这个法则运算下去,最终必然得1。试问,该数通过几轮变换,会变成1呢?给你一个大小size,生成一个元素。将一个整数分解为若干质因数之乘积。你需要从小到大排列质因子。

2025-05-10 21:56:56 365

原创 LintCode第68题-二叉树的前序遍历,第67题-二叉树的后序遍历

它将被序列化为{1,#,2,3}之后进行后序遍历。它将被序列化为{1,2,3}之后进行后序遍历。它将被序列化为{1,#,2,3}前序遍历。给出一棵二叉树,返回其节点值的前序遍历。给出一棵二叉树,返回其节点值的后序遍历。它将被序列化为{1,2,3}前序遍历。

2025-05-10 13:04:01 892

原创 LintCode第366题-斐波那契数列

解题思路1:递归 下面的代码正确但会产生大量不必要的递归和累加,造成代码执行超时。查找斐波纳契数列中第 N 个数。(N 从 1 开始)个斐波那契数不会超过32位带符号整数的表示范围。我们可以只单纯记录n的累加和即。

2025-05-10 12:36:30 255

原创 LintCode第495题-实现栈

/ 按索引删除最后一个元素。// 获取最后一个元素。实现一个栈,可以使用除了栈之外的数据结构。

2025-05-10 12:08:59 325

原创 LintCode第492题-队列维护

/ 确保FIFO:从队列头部移除元素。// 在队列尾部添加元素。

2025-05-10 12:05:39 321

原创 第423题-有效的括号序列

if(strStack.isEmpty())//出现左括号不够的情况。// 没有匹配的左括号。strStack.isEmpty())//出现只有左括号的情况。// 栈顶必须是左括号。// 右括号检查栈顶。// 使用栈来匹配括号。

2025-05-09 15:43:04 905

原创 LintCode第263题-小括号匹配

/ 没有匹配的左括号。// 栈顶必须是左括号。// 右括号检查栈顶。// 使用栈来匹配括号。, 判定是否是有效的括号序列。//出现只有左括号的情况。出现左括号不够的情况。

2025-05-09 15:41:41 410

原创 LintCode1343-两字符串和,1535-转换成小写字母

该函数接收一个字符串参数 str,并将该字符串中的大写字母转换成小写字母,之后返回新的字符串.for(int i=1;i<=offSet;i++)//i指的是个数。i<=offSet;i++)//i指的是个数。2.语义明确,简洁:Character.getNumericValue。给定两个仅含数字的字符串,你需要返回一个由各个位之和拼接的字符串。{ //将b追加长度。

2025-05-09 13:08:19 634

原创 LintCode第422题-最后一个单词的长度,491题-回文数,936题-首字母大写

回文数的定义是,将这个数反转之后,得到的数仍然是同一个数.给的数一定保证是32位正整数,但是反转之后的数就未必了。输入一个英文句子,将每个单词的第一个字母改成大写字母。是指仅由字母组成,且不包含空格字符的。// 将第一个字符大写。,请返回其最后一个单词的长度。判断一个正整数是不是回文数。, 包含大小写字母、空格。

2025-05-09 11:23:51 606

原创 LintCode第1334题-旋转数组,146题-大小写转换II,353题-最大字母

给定字符串S,找到一个字母字符,其大写和小写字母均出现在S中,则返回此字母的大写,若存在多个答案,返回最大的字母,不存在则返回"NO".if(currentChar>='a'&¤tChar<='z')//是小写字母。if(currentChar>='A'&¤tChar<='Z')//是大写字母。// 易错点: 因为题目中的k可能会超出整个数组的取值范围 所以要保证 k 在有效范围内。// 易错点:保证 k 在有效范围内。给定一个数组,将数组向右移动k步,其中k为非负数.// 直接遍历字符串,转换并拼接。

2025-05-08 00:41:15 837

原创 LintCode第768题-杨辉三角形

在开始之前 务必学习list与数组直接的互相转换数组转化为List。

2025-05-07 12:57:02 478

原创 LintCode第539题-移动零,767题-翻转数组

j++)//采用直接交换。移动到数组的最后面,非零元素保持原数组的顺序。注意:1.必须在原数组上操作。原地意味着你不能使用额外空间。

2025-05-07 12:38:12 323

原创 LintCode407-加一,LintCode第479题-数组第二大数

/BigInteger.valueOf(任意整数)放在bigIntegerValue.add()方法里里面 表示加上任意一个数。//如果是Integer数组 可以用Arrays.sort(boxed, Comparator.reverseOrder());给定一个非负数,表示一个数字数组,在该数的基础上+1,返回一个新的数组。如果此题使用Integer,那么会造成整数溢出越界问题。该数字按照数位高低进行排列,最高位的数在列表的最前面.//如果为int[]可以可以先进行包装。在数组中找到第二大的数.

2025-05-06 23:47:16 354

原创 LintCode第484题-交换数组两个元素,第9题-Fizz Buzz 问题,第46题-主元素,第50题数组剔除元素后的乘积

j++)//当前j跟随i动态变化 当前轮的起步位置。i++)//每轮是数组的起步位置。定义B[i]=A[0]∗...∗A[i−1]∗A[i+1]∗...∗A[n−1], 计算。给定一个整型数组,找出主元素,它在数组中的出现次数大于数组元素个数的二分之一.//统计哪个map的值超过了列表的一半 哪个就是主元素。//统计当前元素出现的次数。给你一个数组和两个索引,交换下标为这两个索引的数字。数组中1的个数大于数组元素的二分之一。数组中2的个数大于数组元素的二分之一。假设数组非空,且数组中总是存在主元素。

2025-05-06 21:49:36 695

原创 LintCode第25题-打印X,214题-数组的最大值,297题-寻找最大值,298题-寻找素数

不能将float MaxValue=a[0];写为 float MaxValue=Float.MIN_VALUE;因为Float.MIN_VALUE值为最小的正数值 所以不包含小于0的情况。j++) //当前字符串的长度。i++)//当前的层数。, 你需要按样例的方式返回一个字符串列表。给一个浮点数数组,求数组中的最大值。保证 n 是100以内的整数。寻找 n 个数中的最大值.输出n以内所有的素数.

2025-05-06 15:37:16 749

原创 LintCode第766题,LintCode第1141题,LintCode第478题

闰年是包含额外一天的日历年. 如果年份可以。给定年份和月份,返回这个月的天数。以上两个满足其中之一就是闰年。返回 10 - 11的结果。返回 1 + 2 的结果。返回10 * 20的结果。返回 3 / 2的结果。, 那么这一年为闰年。

2025-05-06 00:04:25 532

原创 LintCode第23题-判断数字与字母字符 第145题-大小写转换 第283题-三数之中的最大值

我们还应该掌握常见的char与int类型的转化。直接使用包装类的方法来判断。

2025-05-05 15:00:47 160

原创 LintCode第1300题-巴什博弈

你正在和朋友玩一个游戏:桌子上有一堆石头,每一次你们都会从中拿出1到3个石头。拿走最后一个石头的人赢得游戏。游戏开始时,你是先手。// true 表示我,false 表示对方。// 无法让对方面对4的倍数,只能随便拿1个。举例:有四个石头,那么你永远不会赢得游戏。不管拿几个,最后一个石头一定会被你的朋友拿走。假设两个人都绝对理性,都会做出最优决策。给定石头的数量,判断你是否会赢得比赛。// 谁最后拿走,谁赢。// 当前玩家采取最优策略:让对方面对4的倍数。// 当前玩家可以直接拿完,赢了。

2025-05-05 14:46:33 314

原创 LintCode第764题-计算圆周长和面积

其中数组的第一个元素代表圆的周长,数组的第二个元素代表圆的面积。该题关键是要知道圆的周长计算公式和圆的面积计算公式。你的任务是返回一个数组。

2025-05-05 14:03:59 218

原创 LintCode第37题-反转一个三位整数

/ 将其加到反转结果的末尾。// 去掉 number 的最后一位。// 取出最后一位数字。// 当 number 不为 0 时,持续进行反转操作。// 将数字转为字符串,再转为字符数组。// 转换为整数(会自动忽略前导 0)使用字符串转化,将其次序反转并重新转化为数字。// 从后往前遍历字符数组。// 创建反转后的字符串。反转一个只有3位数的整数。对10求余取出最后一位数字。将其加到反转结果的末尾。

2025-05-05 13:54:43 301

eclipse色彩配置

省去了大家配色的麻烦,参考的是绿色背景的配色方案,参考网址http://jingyan.baidu.com/article/d5a880eb6c4f7813f147ccef.html

2015-07-16

空空如也

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

TA关注的人

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