代码随想录算法训练营第三十五天| 416. 分割等和子集-爱代码爱编程
416. 分割等和子集 题目: 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 示例 1: 输入:nums = [1,5,11,5] 输出:true 解释:数组可以分割成 [1, 5, 5] 和 [11] 。 示例 2:
代码编织梦想
416. 分割等和子集 题目: 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 示例 1: 输入:nums = [1,5,11,5] 输出:true 解释:数组可以分割成 [1, 5, 5] 和 [11] 。 示例 2:
416. 分割等和子集 题目链接:力扣题目链接 文章讲解:代码随想录 视频讲解:动态规划之背包问题,这个包能装满吗?| LeetCode:416.分割等和子集 给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 注意: 每个数组中的元素不会超过 100 数组的大小不会超过 200
目录 46. 携带研究材料 题目描述 输入描述 输出描述 输入示例 输出示例 提示信息 LeetCode416.分割等和子集 46. 携带研究材料 题目描述 小明是一位科学家,他需要参加一场重要的国际科学大会,以展示自己的最新研究成果。他需要带一些研究材料,但是他的行李箱空间有限。这些研究材料包括实验设备、文献资料和实验样本
算法介绍: 前缀和算法是一种用空间换事件的算法,常用于解决某些题目或作为高级算法的组成部分。它可以用于快速计算数组元素之和,通过预先计算数组中每个位置前所有元素的累加和,将这些部分和存储在一个新数组中,从而在需要计算某个区间的和时,可以通过简单的减法操作得到结果,而不必重新遍历整个区间。 第一题:求区间和 P8218 【深进1.例1】求区间和 - 洛
Leetcode 第 404 场周赛题解 Leetcode 第 404 场周赛题解题目1:3200. 三角形的最大高度思路代码复杂度分析 题目2:3201. 找出有效子序列的最大长度 I思路代码复杂度分
目录 题目: 代码(首刷看解析 2024年2月9日): 代码(二刷看解析 2024年2月29日) 代码(三刷自解 2024年3月3日) 代码(四刷看解析 贪心 2024年6月4日 go) 代码(五刷看解析 贪心 2024年7月26日) 题目: 代码(首刷看解析 2024年2月9日): class Solutio
115. 不同的子序列 - 力扣(LeetCode) 思路:用s与t比较相等就判断dp[i-1][j-1]+dp[i-1][j]两个方向的值,不相同就判断dp[i-1][j]方向 重点:if(s[i-1]==t[j-1]){ dp[i][j]=(dp[i-1][j-1]+dp[i-1][j])%mod;
优势洗牌 leetcode870. 优势洗牌题目描述双指针 + 排序代码 滑动窗口 leetcode870. 优势洗牌 难度 - 中等 leetcode870. 优势洗牌 题目描述
首先推荐博客:图论最短路径专题(力扣743、5888)_力扣 最短路径-CSDN博客 迪杰斯特拉算法: 太久没有做图论的题了,,临时抱佛脚。。 这道题可以转化为max{点x到点k的距离}。因为带权图(权值为正),无环,求最短路径的情况,迪杰斯特拉分为两个步骤:首先是初始化数组(G:二维数组,记录初始时刻点与点之间的距离,dist:每个点
344.反转字符串 解法1: 通过双指针移动,使用swap库函数 学会了位运算实现swap s[i] ^= s[j]; s[j] ^= s[i]; s[i] ^= s[j]; 建议: 本题是字符串基础题目,就是考察 reverse 函数的实现,同时也明确一下 平时刷题什么时候用 库函数,什么时候 不用库函数 过于白给就不库
前言 整体评价 难得的手速场,这几题都比较套路,确实区间合并很久没考察到了。 不过T4有多种解,栈模拟/差分/链式并查集,都可以的。 欢迎star gitee github T1. 统计已测试设备
一、斐波那契数列模型 0、第N个泰波那契数 class Solution { public int tribonacci(int n) { // 1. 创建 dp 表
本文仅供个人学习使用,免费分享。每日更新,建议关注收藏! 目前[机试指南]本系列已经达到字数10w+,所以按原每个章节拆开发布,点击目录跳转。 本站友情链接: c/c++算法题指南 严书代码 c/c++大复习1 c/c+
前言 整体评价 感觉是分类讨论场,t3用二分,是因为二分不会错,直接分类讨论容易WA. t4一开始看错题了,T_T, 看成翻转,写了半天StringHash, 还用上双hash,共8个StringHash。
作者推荐 视频算法专题 本文涉及知识点 动态规划汇总 LeetCode741 摘樱桃 给你一个 n x n 的网格 grid ,代表一块樱桃地,每个格子由以下三种数字的一种来表示: 0 表示这个格子是空的,所以你可
前言 动态规划算法里面最有意思的一个东西之一。动态规划初学肯定会有一定晦涩难懂。如果我们去网上搜索,动态规划的资料,它一开始都是将很多的理论,导致会认为很难,但是这个东西实际上是有套路的。 动态规划的英语是Dynamic
问题描述 输入输出 题目分析 题目说了一大堆,其实意思就是:给你一个数组,你需要把数组拆分成两半,并且每一半的所有数的总和需要为偶数(若数为0则总和视为0,也是偶数)。 方法一 动态规划——数&总和(未通过) 首先想到的是将可选的数作为行,所选的数之和为列,进行动态规划。 推导出的公式为dp[i][j] = dp
#include<iostream> #include<algorithm> #include<cstring> using namespace std; const int N = 1e5 + 10, INF = 2e9; int x[N], a[N], b[N]; // a数组是传送前的
1.数组切分 题目链接:数组切分 2.明确dp[数组] 第一眼回溯法枚举确实是可以解决该题,但是会超时这里不描述该方法的代码,重点讲述动态规划的思路,改题目是要找划分的连续子序列的个数,所以我们明确一个dp数组的含义是:dp[i]表述以A[i]结尾可以划分多少个连续子序列,故最后求得的dp[n]就是我们要求的答案 3dp初始化
一、美丽的2. 1. 考点:模拟 2. 难度:⭐ 3. 要点分析:无。 import sys import os count = 0 for i in range(1,2020+1): if '2' in str(i): count += 1 print(count) 二、合数个数。 1. 考点:模拟、枚举 2. 难