自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 day43

给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target。请你从 nums 中找出并返回总和为 target 的元素组合的个数。给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0。题目数据保证结果符合 32 位带符号整数。题目数据保证答案符合 32 位整数范围。假设每一种面额的硬币有无限个。

2024-02-27 09:06:22 483

原创 day43

例如,nums = [2, 1] ,可以在 2 之前添加 ‘+’ ,在 1 之前添加 ‘-’ ,然后串联起来得到表达式 “+2-1”。假设石头的重量分别为 x 和 y,且 x <= y。= y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。请你找出并返回 strs 的最大子集的长度,该子集中 最多 有 m 个 0 和 n 个 1。如果 x 的所有元素也是 y 的元素,集合 x 是集合 y 的 子集。如果 x == y,那么两块石头都会被完全粉碎;

2024-02-26 18:55:28 382

原创 day41动态规划

给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。

2024-02-24 13:38:35 211

原创 day40

给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k >= 2 ),并使这些整数的乘积最大化。返回 你可以获得的最大乘积。

2024-02-23 12:28:01 186

原创 day39

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?不同路径题目描述一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍

2024-02-22 13:51:50 385

原创 day38 动态规划

斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0,F(1) = 1F(n) = F(n - 1) + F(n - 2),其中 n > 1给定 n ,请计算 F(n) 。爬楼梯题目描述假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?使用最小花费爬楼梯题目描述给你一个整数数组 cost ,其中 cost[i] 是从

2024-02-21 10:59:42 192

原创 day 37 贪心

当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的。给定一个整数 n ,返回 小于或等于 n 的最大数字,且数字呈 单调递增 。

2024-02-20 21:44:23 234

原创 day36 贪心

给定一个区间的集合 intervals ,其中 intervals[i] = [starti, endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠 。划分字母区间题目描述给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s 。返回一个表示每个字符串片段的长度的列表。合并区间题目描述以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i]

2024-02-19 10:42:53 302

原创 day34 贪心

在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。注意,一开始你手头没有任何零钱。给你一个整数数组 bills ,其中 bills[i] 是第 i 位顾客付的账。如果你能给每位顾客正确找零,返回 true ,否则返回 false 。根据身高重建队列题目描述假设有打乱顺序的一群人站成一个队列,数组

2024-02-17 11:38:30 147

原创 day32 贪心

给你一个整数数组 nums 和一个整数 k ,按以下方法修改该数组:选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。重复这个过程恰好 k 次。可以多次选择同一个下标 i 。以这种方式修改数组后,返回数组 可能的最大和 。加油站题目描述在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。给定两个整数数组 gas

2024-02-16 11:52:20 289

原创 day31 贪心

给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。返回 你能获得的 最大 利润 。跳跃游戏题目描述给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。跳跃游戏题目描述给定一个长度为

2024-02-15 22:24:01 300

原创 day 31贪心

假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。摆动序列题目描述如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为 摆动序列 。第一个差(如果存在的话)可能是正数或负数。仅有一个

2024-02-14 20:12:40 839

原创 day30 n皇后

按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。?

2024-02-08 22:38:26 193

原创 day29 回溯

给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。全排列题目描述给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。全排列题目描述给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。

2024-02-07 22:11:08 221

原创 day28 回溯

有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 ‘.’ 分隔。例如:“0.1.2.201” 和 “192.168.1.1” 是 有效 IP 地址,但是 “0.011.255.245”、“192.168.1.312” 和 “192.168@1.1” 是 无效 IP 地址。给定一个只包含数字的字符串 s ,用以表示一个 IP 地址,返回所有可能的有效 IP 地址,这些地址可以通过在 s 中插入 ‘.’ 来形成。你 不能 重新排序或删除 s 中的任何数

2024-02-07 21:33:42 163

原创 day27回溯

给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates 中的 同一个 数字可以 无限制重复被选取 。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,保证和为 target 的不同组合数少于 150 个。组合总数题目描述给定一个候选人编号的集合 candidates 和一个目标数 targ

2024-02-05 22:47:39 262

原创 day25回溯

找出所有相加之和为 n 的 k 个数的组合,且满足下列条件:只使用数字1到9每个数字 最多使用一次返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺序返回。电话号码的组合题目描述给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

2024-02-03 22:23:33 269

原创 day24 回溯

给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。你可以按 任何顺序 返回答案。

2024-02-02 21:38:34 153

原创 day23 树

给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。 可以证明,存在 唯一的答案 。所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能会根据给定的边界发生改变。删除时要注意删除后的树的元素是否还符合二叉搜索树。将有序数组转化为二叉搜索树题目描述给你一个整数数组 nums ,其中元素已经按 升

2024-02-01 20:45:38 329

原创 day21 树

给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”二叉搜索树的左子树是比根元素小的元素。右子树是比跟根元素大的子树。根据这个特性来进行搜索。二叉搜索树中的插入操作题目描述给定二叉搜索树(BST)的根节点 root 和要插入树中的值 value ,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入

2024-01-31 15:12:33 172

原创 day 21树

给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。差值是一个正数,其数值等于两值之差的绝对值。二叉树是有序的。可以进一步简化为在一个有序数组上进行操作Java二叉搜索树中的众数题目描述给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素)。如果树中有不止一个众数,可以按 任意顺序 返回。假定 BST 满足如下定义:结点左子树中所含节点的值 小于等于 当前节点的值结点右子树中所含节点的值 大于等于

2024-01-30 22:04:43 161

原创 day20 树

想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节点将直接作为新二叉树的节点。你需要在 BST 中找到节点值等于 val 的节点。递归的找到最大值,然后将其挂在左右节点。给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。创建一个根节点,其值为 nums 中的最大值。节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。

2024-01-29 22:09:50 223

原创 day18 树

给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。假设二叉树中至少有一个节点。层序遍历,递归也是可以的。Java路径总和题目描述给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。叶子节点 是指没有子节点的节点。递归遍历树Java从中序和后序遍历序列构造二叉树题目描述给定两个整数

2024-01-27 21:01:26 204

原创 day 17树

给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。给定二叉树的根节点 root ,返回所有左叶子之和。递归遍历数组,然后递归是仍需进行回溯将节点删除。给定一个二叉树,判断它是否是高度平衡的二叉树。递归遍历然后判断节点的左右子树的高度差。叶子节点 是指没有子节点的节点。

2024-01-26 20:48:35 27

原创 day 16树

给定一个二叉树 root ,返回其最大深度。二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。使用递归 ,求左右子树的深度然后加一递归循环Java二叉树的最小深度题目描述给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。遍历查询树的左右字数高度Java完全二叉树的节点个数题目描述给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可

2024-01-25 21:39:39 143

原创 day14 树

给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。交换树的每个元素的左右孩子JavaBFS对称二叉树题目描述给你一个二叉树的根节点 root , 检查它是否轴对称。比较树的每个元素的子树的外侧和内侧是否相等Java

2024-01-24 22:01:29 316

原创 day13 树

【代码】day13 树。

2024-01-23 23:04:14 464

原创 day12 栈3

给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回 滑动窗口中的最大值 。使用单调队列。队列模拟窗口滑动一进一出。为了方便起见,单调队列只维护可能成为最大值的元素。在进行Pop操作时,需要移除的元素等于出口元素则队列弹出元素。否则不操作。在push时,如果push的元素大于队列入口元素那么将队列入口元素弹出,直到push元素小于等于队列入口元素Java前k个高频元素题目描述给你一个整数数

2024-01-22 23:28:45 321

原创 day11 栈

给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。遍历字符串,统计对应括号的数量。这里使用一个取巧的方法遍历到左括号时,将右括号入栈,如果遍历到右括号时查看栈是否为空,或者栈顶元素是否与自己相同。相同就弹出这个元素,不相同就返回false。最后判断栈是否为空。Java删除字符串中的相邻重复项题目描述给出由小写字母组成的字符串

2024-01-20 22:31:43 361

原创 day10链表

请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返回队列开头的元素boolean empty() 如果队列为空,返回 true ;否则,返回 false说明:你 只能 使用标准的栈操作 —— 也就是只有 push to top, peek/pop from top, size, 和 i

2024-01-19 22:56:23 317

原创 day9 kmp

给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。使用Kmp算法可以解决Java重复的子字符串题目描述给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成。kmpJava

2024-01-18 22:30:29 328

原创 day8 字符串

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。因为题目要求必须原地修改数组, 因此采用双指针的形式 一个定义在再头部,一个定义再尾部,两者不断向中间靠拢CJava反转字符串II题目描述给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。如果剩余字符少于 k 个,则将剩余字符全部反转。如果剩余字符

2024-01-17 22:18:21 1642

原创 day7 hash和双指针

给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足:0 <= i, j, k, l < nnums1[i] + nums2[j] + nums3[k] + nums4[l] == 0将4个数组划分为2个数组(两两一组),遍历前两个数组,将其元素各个求和,存入map中,value存这个值出现了几次,然后遍历后两个数组,查询map中是否存在0 - (后两个数组元素和) 如果存在则返回值加value的值C语言实现Ma

2024-01-16 22:46:53 379

原创 day6 hash

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。设两个hashset 第一个用来存nums1的数据 然后遍历Nums2如果遇到相同的值那么就将相同的值加入第二个hashset。用map记录数组中的值,然后查找所需的值是否在map中,在的话直接获得其对应的下标。重复过程中可能会出现相同的数,如果出现相同的数那么就证明到不了1 就可以直接判负。对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。

2024-01-15 21:27:46 334

原创 day4 链表2

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。申请两个虚拟节点,第一个虚拟节点cur用来记录当前需要进行的交换的第一个节点,next用来记录下一次需要进行交换的第一个节点。CJava删除链表的倒数第N个节点题目描述给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。快慢指针,快指针比满指针多走n步,当快指针走到最后一个元素时慢指针就处在倒数第n个元素上。CJava链表相交题目描述给

2024-01-13 21:38:29 388

原创 day3链表1

void addAtIndex(int index, int val) 将一个值为 val 的节点插入到链表中下标为 index 的节点之前。在插入完成后,新节点会成为链表的第一个节点。给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点。val 是当前节点的值,next 是指向下一个节点的指针/引用。void addAtTail(int val) 将一个值为 val 的节点追加到链表中作为链表的最后一个元素。

2024-01-12 22:46:35 393

原创 day2数组2

给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。先平方数组后用选择排序来解决。(时间复杂度为O(n2))CJavaCJava长度最小的子数组题目描述给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。1.暴力求解C

2024-01-11 22:14:33 388

原创 二分查找&删除元素

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。设置两个指针,一个指向数组头部,一个指向数组尾部。指向数组头部的不断向后遍历数组,指向数组尾部的不断向前遍历数组。给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。注意head , tail指针的取值问题,如果遇到只有一个元素的数组则更加需要注意取值。元素的顺序可以改变。

2024-01-10 15:58:24 1313 1

空空如也

空空如也

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

TA关注的人

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