数据结构与算法
数据结构与算法
叶卡捷琳堡
单纯,善良,丰富,美好
展开
-
leetcode(912)——排序数组
文章目录一、题目二、题解(C++)一、题目912.排序数组给你一个整数数组 nums,请你将该数组升序排列。示例 1:输入:nums = [5,2,3,1]输出:[1,2,3,5]示例 2:输入:nums = [5,1,1,2,0,0]输出:[0,0,1,1,2,5]提示:1 <= nums.length <= 5 * 104-5 * 104 <= nums[i] <= 5 * 104二、题解(C++)使用快速排序解决问题,也可直接调用sort库函数原创 2022-01-15 14:14:36 · 381 阅读 · 0 评论 -
贪心算法——leetcode135.分发糖果
文章目录题目题解题目老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。你需要按照以下要求,帮助老师给这些孩子分发糖果:每个孩子至少分配到 1 个糖果。评分更高的孩子必须比他两侧的邻位孩子获得更多的糖果。那么这样下来,老师至少需要准备多少颗糖果呢?示例 1:输入:[1,0,2]输出:5解释:你可以分别给这三个孩子分发 2、1、2 颗糖果。示例 2:输入:[1,2,2]输出:4解释:你可以分别给这三个孩子分发 1、2、1 颗糖果。原创 2021-10-11 16:15:17 · 241 阅读 · 0 评论 -
贪心算法——leetcode455.分发饼干
文章目录一、题目二、题解一、题目假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。示例 1:输入: g = [1,2,3], s = [1,1]输出: 1解释:你有三个孩子和两原创 2021-10-11 15:48:43 · 184 阅读 · 0 评论 -
动态规划——leetcode64.最小路径和
文章目录一、题目二、题解一、题目给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例 1:输入:grid = [[1,3,1],[1,5,1],[4,2,1]]输出:7解释:因为路径 1→3→1→1→1 的总和最小。示例 2:输入:grid = [[1,2,3],[4,5,6]]输出:12提示:m == grid.lengthn == grid[i].length1 <原创 2021-10-07 10:49:44 · 149 阅读 · 0 评论 -
动态规划——leetcode413.等差数列划分
文章目录一、题目二、题解一、题目如果一个数列 至少有三个元素 ,并且任意两个相邻元素之差相同,则称该数列为等差数列。例如,[1,3,5,7,9]、[7,7,7,7] 和 [3,-1,-5,-9] 都是等差数列。给你一个整数数组 nums ,返回数组 nums 中所有为等差数组的 子数组 个数。子数组 是数组中的一个连续序列。示例 1:输入:nums = [1,2,3,4]输出:3解释:nums 中有三个子等差数组:[1, 2, 3]、[2, 3, 4] 和 [1,2,3,4] 自身。示原创 2021-10-05 21:00:18 · 144 阅读 · 0 评论 -
动态规划——leetcode198.打家劫舍
文章目录一、题目二、题解一、题目你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 = 1 + 3 =原创 2021-10-03 11:11:54 · 166 阅读 · 0 评论 -
动态规划——LeetCode70.爬楼梯
文章目录一、题目二、题解一、题目假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 + 2 阶3. 2 阶 + 1 阶二、题解class Solution原创 2021-10-03 10:53:34 · 182 阅读 · 0 评论 -
ALDS1_3_A:Stack
文章目录一、题目二、题解(C++)一、题目逆波兰数二、题解(C++)思路:程序从算式开头逐一读取字符串,如果字符是操作数,则压入栈,如果是运算符,则从栈中取出两个数值算出结果再压入栈,如此循环。最终栈中剩下的数值便是答案#include<iostream>#include<stack>#include<string>using namespace std;int main() { //用于保存数的栈 stack<int> s; s原创 2021-07-12 11:14:48 · 122 阅读 · 0 评论 -
C++STL基本使用
文章目录一、stack二、queue三、vector四、list一、stack示例#include<iostream>#include<stack>using namespace std;int main() { stack<int> s; s.push(1); s.push(2); s.push(444); s.push(-1); s.push(100); cout << "s.size = " << s.size(原创 2021-07-11 16:14:27 · 345 阅读 · 2 评论 -
ALDS 1_1_D:Maximum Profit
文章目录题目题解题目将某货币在t时刻的价格Rt作为输入数据,计算出价格差Rj-Ri(j > i)的最大值输入:第一行输入整数n,接下来n行依次给整数Rt赋值输出:在单独一行输出最大值题解1.第一种解法,复杂度O(n^2)#include<iostream>using namespace std;int main(){ //输入要输入的数的总量以及所有数 int n = 0; cin >> n; int* a = new int[n]; for(in原创 2021-07-11 11:13:21 · 176 阅读 · 0 评论