- 博客(31)
- 资源 (2)
- 收藏
- 关注
原创 leetbook数组和字符串~2. 搜索插入位置
搜索插入位置给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。示例 1:输入: nums = [1,3,5,6], target = 5输出: 2示例 2:输入: nums = [1,3,5,6], target = 2输出: 1示例 3:输入: nums = [1,3,5,6], target = 7输出: 4示例 4:输入: nums = [1,3,5,6]
2022-03-03 18:42:48
285
原创 leetbook数组和字符串~1. 寻找数组的中心索引
寻找数组的中心索引给你一个整数数组 nums ,请计算数组的 中心下标 。数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。如果中心下标位于数组最左端,那么左侧数之和视为 0 ,因为在下标的左侧不存在元素。这一点对于中心下标位于数组最右端同样适用。如果数组有多个中心下标,应该返回 最靠近左边 的那一个。如果数组不存在中心下标,返回 -1 。示例 1:输入:nums = [1, 7, 3, 6, 5, 6]输出:3解释:中心下标是 3 。左侧数之和 sum
2022-03-03 18:38:26
281
原创 leetcode22题 括号生成 dfs和动态规划
leetcode22题 括号生成题目数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。有效括号组合需满足:左括号必须以正确的顺序闭合。示例 1:输入:n = 3输出:["((()))","(()())","(())()","()(())","()()()"]示例 2:输入:n = 1输出:["()"]提示:1 <= n <= 8解法一(DFS)这道题可以描述成一颗二叉树,然后通筛选掉不合适的结果,返回正确的结果,先看当括
2021-11-23 17:18:52
4117
原创 leetcode21题 合并俩个有序的链表(俩种解法)
leetcode21题 合并俩个有序的链表题目将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:[0]提示:两个链表的节点数目范围是 [0, 50]-100 <= Node.val <= 100l1 和 l
2021-11-12 12:19:45
228
原创 leetcode20题 有效的括号
leetcode20题 有效的括号题目给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = “()”输出:true示例 2:输入:s = “()[]{}”输出:true示例 3:输入:s = “(]”输出:false示例 4:输入:s = “([)]”输出:false示例 5:输入:s = “{[]}”输出:true
2021-11-10 16:48:28
245
原创 leetcode19题 删除链表的倒数第N个结点
题目给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。进阶:你能尝试使用一趟扫描实现吗?示例 1:输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 示例 2:输入:head = [1], n = 1 输出:[] 示例 3:输入:head = [1,2], n = 1 输出:[1]提示:链表中结点的数目为 sz 1 <= sz <= 30 0 <= Node.val <= 100 1 <= n
2021-11-09 15:07:54
422
原创 leetcode18题 四数之和
题目给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复):0 <= a, b, c, d < n a、b、c 和 d 互不相同 nums[a] + nums[b] + nums[c] + nums[d] == target 你可以按 任意顺序 返回答案 。示例 1:输入:nums
2021-11-09 10:36:45
4178
原创 leetcode17题 电话号码的字母组合
题目给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例 1:输入:digits = "23" 输出:["ad","ae","af","bd","be","bf","cd","ce","cf"] 示例 2:输入:digits = "" 输出:[] 示例 3:输入:digits = "2" 输出:["a","b","c"]提示:0 <= digits.le
2021-11-08 14:48:50
266
原创 leetcode16题 最接近的三数之和
题目给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例:输入:nums = [-1,2,1,-4], target = 1 输出:2 解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。提示:3 <= nums.length <= 10^3 -10^3 <= nums[i] <= 10^3 -1
2021-11-05 15:43:48
3476
原创 leetcode15题 三数之和
题目给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4] 输出:[[-1,-1,2],[-1,0,1]] 示例 2:输入:nums = [] 输出:[] 示例 3:输入:nums = [0] 输出:[]提示:0 <= nums.length <=
2021-11-04 16:01:44
163
原创 leetcode14题 最长公共前缀
题目编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例 1:输入:strs = ["flower","flow","flight"] 输出:"fl" 示例 2:输入:strs = ["dog","racecar","car"] 输出:"" 解释:输入不存在公共前缀。提示:1 <= strs.length <= 200 0 <= strs[i].length <= 200 strs[i] 仅由小写英文字母组成
2021-11-02 16:36:09
1270
原创 leetcode13题 罗马数字转整数
题目罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4
2021-11-02 15:44:37
114
原创 leetcode12题 整数转罗马数字
题目罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4
2021-11-01 15:45:57
150
原创 leetcode第十一题 盛最多水的容器
解题思路这道题关键是理解一个概念:在每个状态下,无论长板或短板向中间收窄一格,都会导致水槽底边宽度 -1变短: 但是当你将短板那侧向内测移动一位的时候,水槽的面积是有可能增大的,比如看这样一张图,当你将短的那侧的向内移动一位,面积由之前的2 X 4 = 8变为5 X 3 = 15 而当你选择向内移动长的那侧的时候,面积是一定减少的,因为,他长度是受到短板的制约;因此无论你接下来向内移动的那个版有多长,都无关紧要了。 而咱们要找的就是在这几个板中构成最大的闭合空间,因此.
2021-10-29 15:33:19
129
原创 leetcode第九题 回文数
题目给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。示例 1:输入:x = 121 输出:true 示例 2:输入:x = -121 输出:false 解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3:输入:x = 10 输出:false 解释:从右向左读, 为 01 。因此它不是一个
2021-10-27 12:46:55
127
原创 leetcode第八题 字符串转换整数
解题思路这道题首先是找条件 去除前置空格 如果遇到全是空格的情况直接返回0即可 判断正负号,这里用一个标记判断一下即可 当正式开始转换的时候,遇到非数字的字符就结束输入 最后就是跟上一道题一样,判断限制,这里不再多说 代码class Solution { public int myAtoi(String s) { int len = s.length(); char[] arrayChar = s.toCharA...
2021-10-26 15:37:25
117
原创 leetcode第七题 整数反转
解题思路 将一个数颠倒就是先通过取余拿最小位,然后乘上对应的倍数,然后通过相除去掉最后一位,拿到倒数第二位,依次循环。 找到最大和最小的界限,最大的界限是2,147,483,647,最小的界限是-2,147,483,648。 越界分为俩种情况,第一种是超过最大值,第二种情况是小于最小值。 然后当颠倒算出来的后九位结果已经大于214748364的时候,无论最后一位是什么,注定越界;第二种是当计算出来的后九位与214748364相等的时候,就看最后一位也就是p是否大于7就可以
2021-10-26 10:07:28
175
原创 leetcode第六题 Z字形变换
题目将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列如下:P A H N A P L S I I G Y I R 之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"PAHNAPLSIIGYIR"。请你实现这个将字符串进行指定行数变换的函数:string convert(string s, int numRows);示例 1:输入:s = "PA
2021-10-26 10:05:42
172
原创 leetcode第五题 最长回文子串
题目给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。 示例 2:输入:s = "cbbd" 输出:"bb" 示例 3:输入:s = "a" 输出:"a" 示例 4:输入:s = "ac" 输出:"a"解题思路先来看别人的一张图按照这种解法,首先想到三种情况 当前位和左边的元素相同 当前位与右边元素相同 当前元素与左边右边都不...
2021-10-26 10:00:41
386
原创 leetcode第四题找俩个数组中的中位数
leetcode第四题:找俩个数组中的中位数 题目 给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。示例 1:输入:nums1 = [1,3], nums2 = [2] 输出:2.00000 解释:合并数组 = [1,2,3] ,中位数 2 示例 2:输入:nums1 = [1,2], nums2 = [3,4] 输出:2.50000 解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2
2021-10-21 15:19:06
240
原创 数据结构-链表基本操作
数据结构-链表基本操作代码写的比较水,为了解决超过表长的数据输进去发生的空指针问题,代码冗余太多了,但是基本功能都实现了。虽然我之前学过数据结构,但是其实跟没学过一样,算得上是重新学习了一遍。 代码 #include <iostream>#include <cstdlib>using namespace std;typedef struct LNode{ int data; struct LNode * next;}*LinkList;...
2021-08-25 11:12:29
199
原创 打印回型数矩阵
打印回型数矩阵举例:1 2 38 9 47 6 5 例1 package com.dahongcui.java;import java.util.Scanner;/* * 从键盘输入一个整数(1~20)例如输入2输出 1 2 * 3 4 */public class ReturnSquare { public static void main(String[] args) ...
2021-08-20 11:04:36
241
原创 不死 神兔
不死神兔的一点理解 题目是这样的:有一对兔子,从出生第三个月起每个月都生一对兔子,小兔子长到第三个月后,每个月又生一只兔子,假如兔子都不死,问第二十个月的兔子对数为多少。 看到这个问题,我首先想到的是递归,因为他符合斐波那契数列,代码如下:public class Rabbit { public int rabbit(int month){ if(month == 2 || month == 1){ return 1; }e...
2021-08-20 10:51:47
1526
原创 用一个类new了一个数组类型的对象,在用这个对象给类里面的属性赋值时,出现空指针错误
用一个类new了一个数组类型的对象,在用这个对象给类里面的属性赋值时,出现空指针错误代码如下:package arrays_problem;public class ClassAssignment { public static void main(String[] args) { Person[] arr = new Person[10]; for(int i = 0;i < arr.length;i++) { //ar
2021-08-20 10:41:04
541
原创 键盘录入一个字符串,要求统计字符串中每个字符串出现的次数
# 用集合去统计字符串中每个字符串出现的次数- 题目:键盘录入一个字符串,要求统计字符串中每个字符串出现的次数。 举例:键盘录入“aababcabcdabcde” 在控制台输出:“a(5)b(4)c(3)d(2)e(1)”```javapublic class HashMapDemo2 { public static void main(String[] args) { //键盘输入一个字符串 Scanner sc =...
2021-08-20 10:32:40
6909
原创 线性表删除最小元素,空出的位置用最后一个元素填补
线性表删除最小元素,空出的位置用最后一个元素填补题目:从顺序表中删除具有最小值的元素(假设唯一)并由函数返回被删元素的值。空出的位置由最后一个元素填补,若顺序表为空则显示出出错信息并退出运行 代码: #include <iostream>#include <cstdlib>#define MAX_LENGTH 10#define ADD_LWNGTH 10using namespace std;typedef struct { int *elem..
2021-08-20 10:22:35
859
原创 数据结构-线性表
数据结构之线性表基本操作(C++)#include <iostream>#include <cstdlib>#define LIST_INT_SIZE 100 //线性表存储空间的初始分配量#define LISTINCREMENT 10 //线性表存储空间的分配增量using namespace std;typedef struct { int *elem; //存储空间的基地址 int length; //当前线性表的长度 int li...
2021-08-17 14:00:57
137
原创 删除windows开机引导项winPE
删除开机引导项winPE 以管理员方式打开cmd窗口 然后选择以管理员身份运行 打开命令窗口后在根目录下输入 bcdedit出现 在下方看到要删除的开机引导项 复制对应标识符并且输入bcdedit /delete "标识符"然后回车就欧克了 ...
2021-08-12 14:33:36
5814
原创 leetcode-3 无重复字符的最长子串
leetcode-3 无重复字符的最长子串题目给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例: 示例1:输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: s = "pwwkew"输出: 3解释: 因为无重复字符的最长子串是"wke..
2021-08-12 11:10:54
305
原创 LeetCode-2 俩数相加
LeetCode-2 俩数相加题目给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例: 1. 输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807 2.输入:l1 = [0], l2 = [0]输出:[0]..
2021-07-28 09:41:05
108
原创 leetcode-1 俩数之和
leetcode-1 俩数之和题目给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的 两个 整数。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]解题思路解法一: 为了保证没俩个数都能进行相加,所以通过俩次for循环让第二层的for循环
2021-07-27 10:14:32
71
Java扫雷源码
2018-06-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人