part05专题

代码随想录算法训练营第五十五天 | 图论part05

107. 寻找存在的路径 只需要判断是否联通,不需要知道具体路径或者路径数量,可以使用并查集。 // project1.cpp : This file contains the 'main' function. Program execution begins and ends there.//#include <iostream>#include <vector>using names

代码随想录算法训练营第四十三天 动态规划 part05● 1049. 最后一块石头的重量 II ● 494. 目标和 ● 474.一和零

1049. 最后一块石头的重量 II 题目链接: . - 力扣(LeetCode) 思路:主要是要找到两个近似相等的子集和,去求这两个和的最小值; 之后就是和从子集中找相对应和的思路是一样的了 注意点:1)dp 初始化;初始为 0; 2)j如果>= 当前物品的容量,是可以装进去的 实现代码: var lastStoneWeightII = function (stones) {let su

【随想录】Day43—第九章 动态规划part05

目录 题目1: 1049. 最后一块石头的重量 II1- 思路2- 题解⭐ 最后一块石头的重量 II ——题解思路 题目2: 494. 目标和1- 思路动规五部曲 2- 题解⭐目标和 ——题解思路 题目3: 一和零1- 思路动规五部曲 2- 题解⭐一和零 ——题解思路 题目1: 1049. 最后一块石头的重量 II 题目链接:1049. 最后一块石头的重量 II

【随想录】Day36—第八章 贪心算法 part05

目录 题目1: 无重叠区间1- 思路2- 题解⭐ 无重叠区间——题解思路 题目2: 763. 划分字母区间1- 思路2- 题解⭐ 划分字母区间——题解思路 题目3: 56. 合并区间1- 思路2- 题解⭐ 合并区间——题解思路 题目1: 无重叠区间 题目链接:435. 无重叠区间 1- 思路 贪心思路: 贪心思路类似于,最少的弓箭射气球的场景 通过遍历的方式

Day43 动态规划 part05

Day43 动态规划 part05 1049.最后一块石头的重量II 我的思路: 提示说和划分两个和相等的子集差不多,猛然想到,这道题不就是划分子集,用sum - 和最大*2 代码就是划分和相同的子集的变形 解答: class Solution {public int lastStoneWeightII(int[] stones) {int sum = Arrays.stream(ston

day 36 贪心算法 part05● 435. 无重叠区间 ● 763.划分字母区间 ● 56. 合并区间

一遍过。首先把区间按左端点排序,然后右端点有两种情况。 假设是a区间,b区间。。。这样排列的顺序,那么 假设a[1]>b[0],如果a[1]>b[1],就应该以b[1]为准,否则以a[1]为准。 class Solution {public:static bool cmp(vector<int>& a ,vector<int>& b){return a[0]<b[0];}int era

代码随想录 day29 第七章 回溯算法part05

491.递增子序列46.全排列47.全排列 II 1. 递增子序列 关联 leetcode 491.递增子序列 本题和大家刚做过的 90.子集II 非常像,但又很不一样,很容易掉坑里。 思路 不能改变原数组顺序 不能先排序去重 同一层去重树枝上可以有重复元素新元素添加条件 大于等于当前次收集数组最右元素 value > array[right] 题解 func findSubs

代码随想录算法训练营day 28| 第七章 回溯part05 |93.复原IP地址 | 78.子集 | 90.子集II

93.复原IP地址 class Solution:def restoreIpAddresses(self, s: str) -> List[str]:results = []self.backtracking(s, 0, [], results)return resultsdef backtracking(self, s, index, path, results):if index == le

代码随想录 day18 第六章 二叉树part05

今日内容 ●  513.找树左下角的值 ●  112. 路径总和  113.路径总和ii ●  106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树 1. 找树左下角的值 思路 递归 最后一行: 找到深度最大的叶子节点,也就找到了最后一行 找到所有叶子节点 更新值为最新一层第一个出现的叶子节点的值 最新一层: 当前最深第一个出现的叶子节点 当前最深一层的最左

Leetcoder Day32| 贪心算法part05

738.单调递增的数字 给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增。 (当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的。) 示例 1: 输入: N = 10输出: 9 示例 2: 输入: N = 1234输出: 1234 示例 3: 输入: N = 332输出: 299 class

Leetcoder Day25| 回溯part05:子集+排列

491.递增子序列 给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。 示例: 输入:[4, 7, 6, 7]输出: [[4, 6], [4, 7], [4, 6, 7], [6, 7], [7,7], [4,7,7]] 说明: 给定数组的长度不会超过15。数组中的整数范围是 [-100,100]。给定数组中可能包含重复数字,相等的数字应该被视为递增的一种情况

代码随想录训练营第三十期|第四十三天|动态规划 part05|1049. 最后一块石头的重量 II ● 494. 目标和 ● 474.一和零

1049. 最后一块石头的重量 II - 力扣(LeetCode) class Solution {public int lastStoneWeightII(int[] stones) {int sum = 0;for (int n : stones) {sum += n;}int target = sum / 2;int[] dp = new int[target + 1];for (int

海智算法训练营第二十九天 | 第七章 回溯算法part05 | * 491.递增子序列* 46.全排列* 47.全排列 II

今日目标: 1.查找所有的非递减子序列 2.全排列 3.全排列II 1.查找所有的非递减子序列 题目:非递减子序列 原理:这道题不能用之前那种去重的方法,因为那些需要有序,这样只需要比较前后两个的值是否相同,而这道题不能使用排序,因为题目的要求是以当前序列的顺序找出他的非递减子序列。 例如: 输入: [4, 6, 7, 7]输出: [[4, 6], [4, 7], [4,

软件方法(下)第8章分析之分析类图—知识篇Part05(202205更新)领域专家和通用语言

DDD领域驱动设计批评-文集-点击查看>> 《软件方法》强化自测题集-点击查看>>**** 8.2.4 类和属性的命名 8.2.4.1 使用严谨的领域术语命名领域模型中的元素 领域模型中各个元素的名称尽量来自该领域的术语体系。 一个领域之所以能作为“领域”为人认知,必定会在发展过程中沉淀出一套日益完善和精确的术语体系。每个术语有其独特的、其他术语不能替代的含义。 例如物理学中的质量、重

Day36 贪心算法 part05

划分字母区间 一个字母区间仅有几个字母前一个字母区间有的字母后面都没有 合并区间 天才举一反三写出来了

代码随想录算法训练营day 29|第七章 回溯算法part05

491.递增子序列  本题和大家刚做过的 90.子集II 非常像,但又很不一样,很容易掉坑里。  代码随想录 视频讲解:回溯算法精讲,树层去重与树枝去重 | LeetCode:491.递增子序列_哔哩哔哩_bilibili 这道题本身没那么难想到,但是有很多要注意点: 一旦path的size大于1,就要收集.使用容器要记住当次for循环已经遍历过的值,这样来去重.可以使用unordere

Day31- 贪心算法part05

一、无重叠区间 题目一:453. 无重叠区间  435. 无重叠区间 给定一个区间的集合 intervals ,其中 intervals[i] = [starti, endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠 。 主要思想是优先保留结束时间早的区间,这样留给其他区间的空间就更多,从而减少需要移除的区间数量。具体做法是先根据每个区间的结束时间进行排序,然后遍历这些区间,

Day25- 回溯算法part05

一、非递减子序列 题目一:491. 非递减子序列 491. 非递减子序列 给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。 数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。 使用set<vector<int>>来存储所有唯一的递增子序列。dfs函数是用于递归地构建子序列的。

回溯算法part05 算法

回溯算法part05 算法 今日任务 491.递增子序列46.全排列47.全排列 II 1.LeetCode 491.递增子序列 https://leetcode.cn/problems/non-decreasing-subsequences/description/ class Solution {List<List<Integer>> result=new ArrayList<>()

贪心算法part05 435无重叠区间

435无重叠区间 763 划分字母区间 56合并区间

day43 动态规划part05

1049.最后一块石头的重量II 与昨天的分割等和子集其实是同样的题 分为两堆后,要求差值最小,其实就是分堆最大,并且范围是[0,sum/2] This question eaquals to partition an array into 2 subsets whose difference is minimal (1) S1 + S2  = S (2) S1 - S2 = diff

代码随想录算法训练营第四十二天丨 动态规划part05

1049.最后一块石头的重量II 思路 本题其实就是尽量让石头分成重量相同的两堆,相撞之后剩下的石头最小,这样就化解成01背包问题了。 感觉和昨天讲解的416. 分割等和子集 (opens new window)非常像了。 本题物品的重量为 stones[i],物品的价值也为 stones[i]。 对应着01背包里的物品重量 weight[i]和 物品价值 value[i]。 接下来进

代码随想录算法训练营第三十四天丨 贪心算法part05

435. 无重叠区间 思路 为了让区间尽可能的重叠,我按照左边界排序,从左向右记录重叠区间的个数。最后直接返回记录的重叠区间的个数就行了。 本题其实和昨天做的 ‘用最少数量的箭引爆气球’ 的思路整体是一样的,忘记思路可用看昨天的题目笔记 代码如下: class Solution {public int eraseOverlapIntervals(int[][] intervals) {i

代码随想录算法训练营第二十八天丨 回溯算法part05

491.递增子序列 思路 这个递增子序列比较像是取有序的子集。而且本题也要求不能有相同的递增子序列。 在90.子集II (opens new window)中是通过排序,再加一个标记数组来达到去重的目的。 而本题求自增子序列,是不能对原数组进行排序的,排完序的数组都是自增子序列了。 所以不能使用之前的去重逻辑! 本题给出的示例,还是一个有序数组 [4, 6, 7, 7],这更容易误导大