自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LeetCode 1089. 复写零 Java

题目给你一个长度固定的整数数组 arr,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。注意:请不要在超过该数组长度的位置写入元素。要求:请对输入的数组 就地 进行上述修改,不要从函数返回任何东西。示例 1:输入:[1,0,2,3,0,4,5,0]输出:null解释:调用函数后,输入的数组将被修改为:[1,0,0,2,3,0,0,4]示例 2:输入:[1,2,3]输出:null解释:调用函数后,输入的数组将被修改为:[1,2,3]提示:1 <= arr

2021-09-30 01:45:52 199

原创 LeetCode 118. 杨辉三角 Java

题目描述给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。示例 1:输入: numRows = 5输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]示例 2:输入: numRows = 1输出: [[1]]提示:1 <= numRows <= 30思路+代码三角直接想象成一个只有一半的二维数组第三行开始,不在两端的数字,就是左上和正上数字的和

2021-09-26 17:08:19 190

原创 LeetCode 88. 合并两个有序数组 Java

题目描述给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。示例 1:输入:nums1 = [1,

2021-09-24 00:13:10 173

原创 LeetCode 82. 删除排序链表中的重复元素 II Java

文章目录题目个人思路代码题目存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字。返回同样按升序排列的结果链表。示例 1:输入:head = [1,2,3,3,4,4,5]输出:[1,2,5]示例 2:输入:head = [1,1,1,2,3]输出:[2,3]提示:链表中节点数目在范围 [0, 300] 内-100 <= Node.val <= 100题目数据保证链表已经

2021-03-25 16:53:36 322

原创 LeetCode 1431. 拥有最多糖果的孩子 Java

题目:给你一个数组 candies 和一个整数 extraCandies ,其中 candies[i] 代表第 i 个孩子拥有的糖果数目。对每一个孩子,检查是否存在一种方案,将额外的 extraCandies 个糖果分配给孩子们之后,此孩子有 最多 的糖果。注意,允许有多个孩子同时拥有 最多 的糖果数目。示例 1:输入:candies = [2,3,5,1,3], extraCandies = 3输出:[true,true,true,false,true]解释:孩子 1 有 2 个糖果,如果

2020-12-07 09:50:58 95

原创 LeetCode 1512. 好数对的数目 Java

题目给你一个整数数组 nums 。如果一组数字 (i,j) 满足 nums[i] == nums[j] 且 i < j ,就可以认为这是一组 好数对 。返回好数对的数目。示例 1:输入:nums = [1,2,3,1,1,3]输出:4解释:有 4 组好数对,分别是 (0,3), (0,4), (3,4), (2,5) ,下标从 0 开始示例 2:输入:nums = [1,1,1,1]输出:6解释:数组中的每组数字都是好数对示例 3:输入:nums = [1,2,3]

2020-12-04 16:51:17 256

原创 LeetCode 204. 计数质数 Python3

题目统计所有小于非负整数 n 的质数的数量。示例 1:输入:n = 10输出:4解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。示例 2:输入:n = 0输出:0示例 3:输入:n = 1输出:0提示:0 <= n <= 5000000个人思路+个人题解(超时)双循环 一层循环判断,一层循环遍历为了优化 用了for else 和开方两种方法from math import sqrtdef isPrime ( a):

2020-12-03 09:41:49 213

原创 LintCode 1901. 有序数组的平方 Java

描述给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。样例示例1输入:[-4,-1,0,3,10]输出:[0,1,9,16,100]示例2输入:[-7,-3,2,3,11]输出:[4,9,9,49,121]注意事项1 <= A.length <= 10000-10000 <= A[i] <= 10000A 已按非递减顺序排序。思路+代码循环计算,排序后返回即可public class Solution

2020-11-10 09:07:54 198

原创 LintCode 1905. 字符删除 Java

题目描述输入两个字符串,从第一字符串中删除第二个字符串中所有的字符样例 1:输入: str=”They are students”,sub=”aeiou”输出: ”Thy r stdnts”注意事项String contains spaces(包含空格)1 ≤ len(str),len(sub) ≤​​105思路+代码第一反应就是双循环遍历,但是根据提示的长度,感觉会很费时间甚至超时,所以空间换时间,用一个hash数组记录要删除的字符(对应的ASCII码)。遍历原字符串,把不删的字

2020-11-09 11:29:10 175

原创 LeetCode 1470. 重新排列数组 Java

题目:给你一个数组 nums ,数组中有 2n 个元素,按 [x1,x2,…,xn,y1,y2,…,yn] 的格式排列。请你将数组按 [x1,y1,x2,y2,…,xn,yn] 格式重新排列,返回重排后的数组。示例 1:输入:nums = [2,5,1,3,4,7], n = 3输出:[2,3,5,4,1,7]解释:由于 x1=2, x2=5, x3=1, y1=3, y2=4, y3=7 ,所以答案为 [2,3,5,4,1,7]示例 2:输入:nums = [1,2,3,4,4,3,

2020-11-06 10:05:52 125

原创 LeetCode 144. 二叉树的前序遍历

给定一个二叉树,返回它的 前序 遍历。示例:代码(递归):class Solution { List<Integer> res = new ArrayList<>(); public List<Integer> preorderTraversal(TreeNode root) { if(root == null){ return res; } res.add(root.val)

2020-10-27 15:14:13 101

原创 LeetCode 905. 按奇偶排序数组 Java

题目:给定一个非负整数数组 A,返回一个数组,在该数组中, A 的所有偶数元素之后跟着所有奇数元素。你可以返回满足此条件的任何数组作为答案。示例:输入:[3,1,2,4]输出:[2,4,3,1]输出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也会被接受。提示:1 <= A.length <= 50000 <= A[i] <= 5000思路+代码双指针左指针在开始位置右指针从头遍历,遇见偶数直接换(是本身也换),之后左指针向右移一

2020-09-29 15:23:05 100

原创 LeetCode 1207. 独一无二的出现次数 Java

题目给你一个整数数组 arr,请你帮忙统计数组中每个数的出现次数。如果每个数的出现次数都是独一无二的,就返回 true;否则返回 false。示例 1:输入:arr = [1,2,2,1,1,3]输出:true解释:在该数组中,1 出现了 3 次,2 出现了 2 次,3 只出现了 1 次。没有两个数的出现次数相同。示例 2:输入:arr = [1,2]输出:false示例 3:输入:arr = [-3,0,1,-3,1,1,1,-3,10,0]输出:true提示:1

2020-09-21 10:51:16 130

原创 LeetCode 26.删除排序数组中的重复项 Java

文章目录题目:个人思路最优思路题目:给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,0,1,1,1,2,2,3,3,4],函数应

2020-09-14 14:00:56 91

原创 LeetCode 面试题 02.01. 移除重复节点 Java

题目:编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。示例1:输入:[1, 2, 3, 3, 2, 1]输出:[1, 2, 3]示例2:输入:[1, 1, 1, 1, 2]输出:[1, 2]提示:链表长度在[0, 20000]范围内。链表元素在[0, 20000]范围内。思路+代码刚开始想的是创建一个新的链表,之后通过哈希数组存已经有的节点值,把不重复的添加的新链表中,最后返回新链表。后来发现可以直接在原链表上操作。用两个指针,前后一起遍历,还是要用哈希数组

2020-09-10 17:29:51 194

原创 LeetCode 709. 转换成小写字母 Java

题目实现函数 ToLowerCase(),该函数接收一个字符串参数 str,并将该字符串中的大写字母转换成小写字母,之后返回新的字符串。示例 1:输入: “Hello”输出: “hello”示例 2:输入: “here”输出: “here”示例 3:输入: “LOVELY”输出: “lovely”思路+个人代码建立一个字符数组,遍历原str,把字符存入新数组中,其中的大写字母转化为小写字母,其余不变。要注意其中一点是,字符串中不只有字母。代码:class Solut

2020-09-09 17:18:57 109

原创 String StringBuilder StringBuffer 简略分析

之前在做题的时候,遇到了字符串拼接相关问题。当时用String,内存消耗和事件消耗都很大,StringBuilder就没有这种问题,于是查了一些资料,做个小总结。StringString内部记录值的变量用final修饰,值不可以被直接改变,在拼接的时候每次都要创建新的字符串,耗费一定的时间和空间。在进行大量字符串操作的时候会很难受。StringBuffer 和 StringBuilder当对字符串进行修改的时候,推荐使用 StringBuffer 和 StringBuilder 类。这两个类.

2020-09-09 16:53:25 155

原创 LeetCode 804. 唯一摩尔斯密码词 Java

题目国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: “a” 对应 “.-”, “b” 对应 “-…”, “c” 对应 “-.-.”, 等等。为了方便,所有26个英文字母对应摩尔斯密码表如下:[".-","-…","-.-.","-…",".","…-.","–.","…","…",".—","-.-",".-…","–","-.","—",".–.","–.-",".-.","…","-","…-","…-",".–","-…-","-.–","–…"

2020-09-08 15:44:22 132

原创 LeetCode 1464. 数组中两元素的最大乘积 Java

文章目录题目个人思路+代码其他解法:题目给你一个整数数组 nums,请你选择数组的两个不同下标 i 和 j,使 (nums[i]-1)*(nums[j]-1) 取得最大值。请你计算并返回该式的最大值。示例 1:输入:nums = [3,4,5,2]输出:12解释:如果选择下标 i=1 和 j=2(下标从 0 开始),则可以获得最大值,(nums[1]-1)(nums[2]-1) = (4-1)(5-1) = 3*4 = 12 。示例 2:输入:nums = [1,5,4,5]输出:

2020-09-07 10:18:50 255

原创 LeetCode 104. 二叉树的最大深度 Java

题目给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],返回它的最大深度 3 。思路+代码带着深度递归,通过判断是否遍历到null,使递归到叶子节点的时候会返回深度,之后获取返回的深度的最大值就可以了。代码:class Solution { public int Depth(TreeNode root, int deep) {

2020-09-04 17:09:26 99

原创 剑指 Offer 42. 连续子数组的最大和 / LeetCode 53. 最大子序和 / LintCode 41. 最大子数组

这三道题其实是一样的题目描述给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。样例输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。输入:[1,2,3,4]输出:10解释:符合要求的子数组为[1,2,3,4],其最大和为 10。思路+代码返回子数组的最大值就可以了,用一个变量记录当前累加的最大结果,一个变量记录累加结果的最大值。如果加了当前数之后,结果

2020-08-25 09:49:27 98

原创 LeetCode 1323. 6 和 9 组成的最大数字 Java

题目描述给你一个仅由数字 6 和 9 组成的正整数 num。你最多只能翻转一位数字,将 6 变成 9,或者把 9 变成 6 。请返回你可以得到的最大数字。示例示例 1:输入:num = 9669输出:9969解释:改变第一位数字可以得到 6669 。改变第二位数字可以得到 9969 。改变第三位数字可以得到 9699 。改变第四位数字可以得到 9666 。其中最大的数字是 9969 。示例 2:输入:num = 9996输出:9999解释:将最后一位从 6 变到 9,

2020-08-24 09:52:32 219

原创 LeetCode 559. N叉树的最大深度 Java

题目给定一个 N 叉树,找到其最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。例如,给定一个 3叉树 :我们应返回其最大深度,3。说明:树的深度不会超过 1000。树的节点总不会超过 5000。思路+代码思路其实和算二叉树深度是差不多的,递归到最深,返回深度,用一个变量记录深度,在返回时进行比较class Solution { public int depth(Node root, int deep) { if(root==null){

2020-08-21 15:36:02 144

原创 LeetCode 226. 翻转二叉树 Java

题目翻转一棵二叉树。示例:输入:输出:思路+代码能看出来就是,从上至下,把每一个节点的左右子树交换,最终就可以达成整个二叉树的翻转个人思路是用递归进行代码:class Solution { public void invert(TreeNode root){ if(root == null){ return ; } TreeNode temp; //交换用 temp = root.le

2020-08-20 14:32:04 185

转载 剑指 Offer 06. 从尾到头打印链表 Java

文章目录题目描述题解:方法一:栈方法二:递归题目描述输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]限制:0 <= 链表长度 <= 10000题解:方法一:栈这里最容易想到的一种方式就是把链表的节点全部压栈,因为栈是先进后出的一种数据结构,全部压栈之后再一个个出栈即可,压栈完之后再一个个出栈public int[] reversePrint(ListNode head) { S

2020-08-19 11:08:24 180

原创 LeetCode 9.回文数 Java

文章目录题目示例思路代码进阶思路官方题解题目判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。思路转字符串,翻转,返回比较结果代码 String s=

2020-08-07 09:45:18 146

原创 LintCode 96.链表划分 Java

文章目录题目描述样例思路代码题目描述给定一个单链表和数值x,划分链表使得所有小于x的节点排在大于等于x的节点之前。你应该保留两部分内链表节点原有的相对顺序。样例样例 1:输入: list = null, x = 0输出: null 样例解释: 空链表本身满足要求样例 2:输入: list = 1->4->3->2->5->2->null, x = 3输出: 1->2->2->4->3->5->null 样例

2020-08-06 13:50:52 141

原创 LeetCode 2.两数相加 Java

文章目录题目描述个人思路及解法(思路与官方相同)官方题解题目描述给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807个人思

2020-08-05 12:00:16 108

原创 LeetCode 1.两数之和 Java

文章目录题目描述个人解法官方题解题目描述给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]个人解法不是排序数组(用纯暴力法即双循环,暴力遍历数组寻找(很笨,不要学)cl

2020-08-04 17:01:34 138

原创 LeetCode 728.自除数 Java

728.自除数来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/self-dividing-numbers自除数 是指可以被它包含的每一位数除尽的数。例如,128 是一个自除数,因为 128 % 1 == 0,128 % 2 == 0,128 % 8 == 0。还有,自除数不允许包含 0 。给定上边界和下边界数字,输出一个列表,列表的...

2019-11-30 23:00:37 136

原创 LeetCode 191.位1的个数 Java

191. 位1的个数来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/number-of-1-bits编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。示例 1:输入:00000000000000000000000000001011输出:3解释:输入的二进制串 00000000...

2019-11-25 22:17:29 212

原创 LeetCode 561.数组拆分 I Java

数组拆分来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/array-partition-i题目描述:给定长度为 2n 的数组, 你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), …, (an, bn) ,使得从1 到 n 的 min(ai, bi) 总和最大。示例输入: [1,4,3,2]输出: 4...

2019-11-23 22:33:39 154

原创 Lintcode 97. 二叉树的最大深度 C++

描述给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的距离。样例样例 1:输入: tree = {}输出: 0 样例解释: 空树的深度是0。样例 2:输入: tree = {1,2,3,#,#,4,5}输出: 3样例解释: 树表示如下,深度是31/ \2 3/ \4 5它将被序列化为{1,2,3,#,#,4,5}思路大概就是递...

2019-05-13 12:38:28 135

原创 Lintcode 822. 相反的顺序存储 C++

描述给出一个链表,并将链表的值以倒序存储到数组中。您不能改变原始链表的结构。ListNode 有两个成员变量:ListNode.val 和 ListNode.next样例样例1输入: 1 -> 2 -> 3 -> null输出: [3,2,1]样例2输入: 4 -> 2 -> 1 -> null输出: [1,2,4]把链表数据存...

2019-05-07 17:49:12 298

原创 Lintcode 53. 翻转字符串中的单词 C++

描述给定一个字符串,逐个翻转字符串中的每个单词。说明·单词的构成:无空格字母构成一个单词,有些单词末尾会带有标点符号·输入字符串是否包括前导或者尾随空格?可以包括,但是反转后的字符不能包括·如何处理两个单词间的多个空格?在反转字符串中间空格减少到只含一个样例样例 1:输入: “the sky is blue”输出: “blue is sky the”样例 2:输入...

2019-05-05 21:24:08 265

原创 Lintcode 846. 多关键字排序 C++

多关键字排序给定 n 个学生的学号(从 1 到 n 编号)以及他们的考试成绩,表示为(学号,考试成绩),请将这些学生按考试成绩降序排序,若考试成绩相同,则按学号升序排序。样例1输入: array = [[2,50],[1,50],[3,100]]输出: [[3,100],[1,50],[2,50]]样例2输入: array = [[2,50],[1,50],[3,50]]输...

2019-05-05 17:58:40 865

原创 算法笔记 第四章 4.1 排序

选择排序插入排序排序题与sort函数应用(常用)这类排序题基本是一定会出一道的,所以掌握一下这个排序方法很有用,sort函数:需要头文件<algorithm.h>语法描述:sort(begin,end,cmp),cmp参数可以没有,如果没有默认升序排序。cmp函数的编写示例结构体示例camp函数例题 :德才论宋代史学家司马光在《资治通鉴》中有一段...

2019-04-30 12:04:26 234

原创 PAT (Basic Level) Practice 1084 外观数列 C++

外观数列外观数列是指具有以下特点的整数序列:d, d1, d111, d113, d11231, d112213111, …它从不等于 1 的数字 d 开始,序列的第 n+1 项是对第 n 项的描述。比如第 2 项表示第 1 项有 1 个 d,所以就是 d1;第 2 项是 1 个 d(对应 d1)和 1 个 1(对应 11),所以第 3 项就是 d111。又比如第 4 项是 d113,其描...

2019-04-29 19:58:24 167

原创 天梯赛-练习集 L1-003 个位数统计 C++

L1-003 个位数统计给定一个 k 位整数请编写程序统计每种不同的个位数字出现的次数。例如:给定 N=100311,则有 2 个 0,3 个 1,和 1 个 3。输入格式:每个输入包含 1 个测试用例,即一个不超过 1000 位的正整数 N。输出格式:对 N 中每一种不同的个位数字,以 D:M 的格式在一行中输出该位数字 D 及其在 N 中出现的次数 M。要求按 D 的升序输出...

2019-04-25 20:59:23 648

原创 Lintcode:82落单的数 C++

题目:给出2*n + 1 个的数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字。样例:给出 [1,2,2,1,3,4,3],返回 4代码:// An highlighted blockclass Solution {public: /** * @param A: An integer array * @return: An intege...

2019-02-14 23:32:25 319

空空如也

空空如也

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

TA关注的人

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