04 2023 档案
摘要:给你一个包含若干互不相同整数的数组nums,你需要执行以下操作直到数组为空 : 如果数组中第一个元素是当前数组中的最小值则删除它 否则,将第一个元素移动到数组的末尾 请你返回需要多少个操作使nums为空 ###一. 数学思维减小问题规模 除去删除元素的操作外,考虑每个数需要移动的次数 假设数组按升序
阅读全文
posted @ 2023-04-30 14:33
失控D大白兔
摘要:给你一个整数数组 nums 以及两个整数 lower 和 upper 求数组中,值位于范围 [lower, upper] (包含 lower 和 upper)之内的 区间和的个数 ###一. 前缀和+双重循环(超时) class Solution { public: int countRangeSu
阅读全文
posted @ 2023-04-25 22:36
失控D大白兔
摘要:###一. 数组 添加线性,访问常数 class MedianFinder { public: MedianFinder() { n = 0; } void addNum(int num) { n++; nums.push_back(num); int index = n - 1; for(int
阅读全文
posted @ 2023-04-24 19:52
失控D大白兔
摘要:###一. 买卖一次(简单) dp[i]表示第i天卖出时的最大值,可以用滚动变量优化 ``` class Solution { public: int maxProfit(vector& prices) { int n = prices.size(); vector dp(n+1); int min
阅读全文
posted @ 2023-04-24 19:17
失控D大白兔
摘要:给你一个字符串 s ,找出它的所有子串并按字典序排列,返回排在最后的那个子串 ###1. 暴力截取比较(超时) 记录最大字符位置,暴力截取比较 class Solution { public: string lastSubstring(string s) { map<char, vector<int
阅读全文
posted @ 2023-04-24 01:44
失控D大白兔
摘要:给定一个整数 n,计算所有小于等于 n 的非负整数中数字 1 出现的个数 ###1. 固定每一位找规律 class Solution { public: int countDigitOne(int n) { unsigned i = 1, ans = 0, befor = 0; //i表示记录到了第
阅读全文
posted @ 2023-04-24 00:10
失控D大白兔
摘要:给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。 你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 ###1. 暴力遍历(超时) 暴力法 class Solution { public: vector<int
阅读全文
posted @ 2023-04-23 22:02
失控D大白兔
摘要:给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数 ###1. 暴力排序查找 排序+去重+二分查找 class Solution { public: int firstMissingPositive(vector<int>& nums) { sort(nums.begin(),
阅读全文
posted @ 2023-04-23 20:47
失控D大白兔
摘要:给你一个整数数组 nums,返回nums中最长等差子序列的长度 ###一. 动态规划 该题类似最长递增子序列 dp[i][j]定义为以i为结尾,公差为j的最长等差数列长度 class Solution { public: int longestArithSeqLength(vector<int>&
阅读全文
posted @ 2023-04-22 22:40
失控D大白兔
摘要:给你两个整数数组 arr1 和 arr2,返回使 arr1 严格递增所需要的最小「操作」数(可能为 0)。 每一步「操作」中,你可以分别从 arr1 和 arr2 中各选出一个索引, 分别为 i 和 j,0 <= i < arr1.length 和 0 <= j < arr2.length,然后进行
阅读全文
posted @ 2023-04-21 00:50
失控D大白兔
摘要:给你一个整数数组 arr,请你将该数组分隔为长度 最多 为 k 的一些(连续)子数组。 分隔完成后,每个子数组的中的所有值都会变为该子数组中的最大值。 返回将数组分隔变换后能够得到的元素最大和 ###一. 动态规划(正向递推) 分析:数组的最大和是和子数组最大和关联的,对子问题的优化可以带来对整个问
阅读全文
摘要:设计一个数据结构,有效地找到给定子数组的 多数元素 。 子数组的 多数元素 是在子数组中出现 threshold 次数或次数以上(大于半数)的元素 分析 对于子区间进行多次查询,采用线段树的方法 给定的数组,我们可以将它分成任意的两部分,分别使用投票算法得到多数元素和出现的次数 如果该数组存在多数元
阅读全文
posted @ 2023-04-18 00:01
失控D大白兔
摘要:###一. 概述 线段树(Segment Tree)是一种用于**处理区间查询和更新的数据结构** 常用于解决一维区间相关的问题,如区间最值、区间和、区间乘积等 线段树的基本思想是将区间划分为一些小的子区间,并在每个子区间上维护一些信息 例如该区间的最值、和、乘积等,通过将大区间不断划分为小区间,直
阅读全文
posted @ 2023-04-17 11:08
失控D大白兔
摘要:###1. 深度优先搜索 + 深度优先搜索 > 分析:选择不相邻节点减半价格并最小化价格 > 涉及到图的选择的问题,考虑使用回溯法,选择为当前节点减半或者不减半,并递归搜索相邻节点 > 不过该题首先要知道哪些点走了几次,可以根据路径选择事先用回溯法得到每个点的访问次数 > 然后根据访问次数与价格生成
阅读全文
posted @ 2023-04-16 19:54
失控D大白兔
摘要:###一. 概述 Dijkstra算法是求一个顶点到其余各顶点的最短路径算法- 迪杰斯特拉算法主要特点是从起始点开始,采用贪心算法的策略 每次遍历到始点距离最近且未访问过的顶点的邻接节点,直到扩展到终点为止 ###二. 算法流程 1. 建立图的存储结构(邻接矩阵/邻接表) 2. 初始化图 3. 初始
阅读全文
posted @ 2023-04-16 04:06
失控D大白兔
摘要:政府批准了可以额外建造 k 座供电站,你需要决定这些供电站分别应该建在哪里,这些供电站与已经存在的供电站有相同的供电范围。 给你两个整数 r 和 k ,如果以最优策略建造额外的发电站,返回所有城市中,最小供电站数目的最大值是多少。 ###一. 二分法+前缀和+贪心 > 分析:最大化最小值,首先考虑使
阅读全文
posted @ 2023-04-15 04:18
失控D大白兔
摘要:在一个 n x n 的整数矩阵 grid 中,每一个方格的值 grid[i][j] 表示位置 (i, j) 的平台高度。 当开始下雨时,在时间为 t 时,水池中的水位为 t 。你可以从一个平台游向四周相邻的任意一个平台,但是前提是此时水位必须同时淹没这两个平台。 你从坐标方格的左上平台 (0,0)
阅读全文
posted @ 2023-04-14 03:40
失控D大白兔
摘要:1. 图中的最短环 广度优先搜索 class Solution { public: int findShortestCycle(int n, vector<vector<int>> &edges) { vector<vector<int>> g(n);//二维矩阵存储 for (auto &e: e
阅读全文
posted @ 2023-04-12 01:33
失控D大白兔

浙公网安备 33010602011771号