1. 大样本统计
    我们对 0 到 255 之间的整数进行采样,并将结果存储在数组 count 中:count[k] 就是整数 k 在样本中出现的次数。

计算以下统计数据:

minimum :样本中的最小元素。
maximum :样品中的最大元素。
mean :样本的平均值,计算为所有元素的总和除以元素总数。
median :
如果样本的元素个数是奇数,那么一旦样本排序后,中位数 median 就是中间的元素。
如果样本中有偶数个元素,那么中位数median 就是样本排序后中间两个元素的平均值。
mode :样本中出现次数最多的数字。保众数是 唯一 的。
以浮点数数组的形式返回样本的统计信息 [minimum, maximum, mean, median, mode] 。与真实答案误差在 10-5 内的答案都可以通过。

class Solution {public:vector<double> sampleStats(vector<int>& count) {double minimum=INT_MAX,maximum=INT_MIN,mean,median,mode;long long sum=0,cnt=0,maxn=INT_MIN;for(int i=0;i<count.size();i++){if(count[i]>0){if(minimum==INT_MAX)minimum=i;maximum=i;sum+=(long long)count[i]*i;cnt+=count[i];if(count[i]>maxn){maxn=count[i];mode=i;}}}mean=(1.0*sum)/cnt;int x=0,l,r;for(int i=0;i<count.size();i++){if(x<(cnt+1)/2&&x+count[i]>=(cnt+1)/2)l=i;//寻找中位数if(x<(cnt+2)/2&&x+count[i]>=(cnt+2)/2)r=i;x+=count[i];}median=(1.0*l+r)/2;return {minimum,maximum,mean,median,mode};}
};
  1. 拼车
    车上最初有 capacity 个空座位。车 只能 向一个方向行驶(也就是说,不允许掉头或改变方向)
    给定整数 capacity 和一个数组 trips , trip[i] = [numPassengersi, fromi, toi] 表示第 i 次旅行有 numPassengersi 乘客,接他们和放他们的位置分别是 fromi 和 toi 。这些位置是从汽车的初始位置向东的公里数。
    当且仅当你可以在所有给定的行程中接送所有乘客时,返回 true,否则请返回 false。

通过差分的方式来修改上下车点的情况,然后通过遍历即可知道是否能接送所有乘客

class Solution {public:bool carPooling(vector<vector<int>>& trips, int capacity) {vector<int> diff(1001,0);for(auto trip:trips){diff[trip[1]] += trip[0];diff[trip[2]] -= trip[0];int sum=0;for(auto value: diff){sum += value;if(sum> capacity) return false;}}return true;     }
};
  1. 山脉数组中查找目标值
    给你一个 山脉数组 mountainArr,请你返回能够使得 mountainArr.get(index) 等于 target 最小 的下标 index 值。如果不存在这样的下标 index,就请返回 -1。

先使用二分法找到数组的峰值。
在峰值左边使用二分法寻找目标值。
如果峰值左边没有目标值,那么使用二分法在峰值右边寻找目标值。

/*** // This is the MountainArray's API interface.* // You should not implement it, or speculate about its implementation* class MountainArray {*   public:*     int get(int index);*     int length();* };*/class Solution {int binary_search(MountainArray &mountain, int target, int l, int r, int key(int)) {target = key(target);while (l <= r) {int mid = (l + r) / 2;int cur = key(mountain.get(mid));if (cur == target) {return mid;} else if (cur < target) {l = mid + 1;} else {r = mid - 1;}}return -1;}
public:int findInMountainArray(int target, MountainArray &mountainArr) {int l = 0, r = mountainArr.length() - 1;while (l < r) {int mid = (l + r) / 2;if (mountainArr.get(mid) < mountainArr.get(mid + 1)) {l = mid + 1;} else {r = mid;}}int peak = l;int index = binary_search(mountainArr, target, 0, peak, [](int x) -> int{return x;});if (index != -1) {return index;}return binary_search(mountainArr, target, peak + 1, mountainArr.length() - 1, [](int x) -> int{return -x;});}
};
  1. 花括号展开 II

BFS/DFS均可

class Solution {public:void ADD(set<string>&s, set<string>& s1) {for (auto x : s1) {s.insert(x);}s1.clear();}void MUL(set<string>&s, const set<string>& s1) {if (s1.empty()) return;if (s.empty()) {s = s1;return;};set<string> s2;for (auto t : s) {for (auto t1 : s1) {s2.insert(t + t1);}}swap(s, s2);}void MUL(set<string>& s, string& t) {if (t.empty()) return;if (s.empty()) {s = {t};t.clear();return;}set<string> s1;for (auto x : s) {s1.insert(x + t);}t.clear();swap(s, s1);}set<string> parse(const string& exp, int l, int r) {set<string> res;set<string> s;string t;int i = l;while (i <= r) {if (exp[i] == ',') {MUL(s, t);ADD(res, s);} else if (exp[i] == '{') {int l = i;int brace = 1;while (brace > 0 && ++i <= r) {brace += exp[i] == '{';brace -= exp[i] == '}';}MUL(s, t);MUL(s, parse(exp, l + 1, i - 1));} else {t += exp[i];}++i;}MUL(s, t);ADD(res, s);return res;}vector<string> braceExpansionII(string expression) {auto s = parse(expression, 0, expression.size() - 1);return vector<string>(s.begin(), s.end());}
};

leetcode解题思路分析(一百三十)1093 - 1096 题相关推荐

  1. leetcode解题思路分析(一百三十四)1131 - 1143 题

    1131.绝对值表达式的最大值 给你两个长度相等的整数数组,返回下面表达式的最大值: |arr1[i] - arr1[j]| + |arr2[i] - arr2[j]| + |i - j| 其中下标 ...

  2. leetcode解题思路分析(一百零二)874 - 880 题

    模拟行走机器人 机器人在一个无限大小的 XY 网格平面上行走,从点 (0, 0) 处开始出发,面向北方.该机器人可以接收以下三种类型的命令 commands : -2 :向左转 90 度 -1 :向右 ...

  3. leetcode解题思路分析(一百零七)909 - 915 题

    蛇梯棋 给你一个大小为 n x n 的整数矩阵 board ,方格按从 1 到 n2 编号,编号遵循 转行交替方式 ,从左下角开始 (即,从 board[n - 1][0] 开始)每一行交替方向.返回 ...

  4. Android开发笔记(一百三十六)可折叠工具栏布局CollapsingToolbarLayout

    可折叠工具栏布局CollapsingToolbarLayout 上一篇博文< Android开发笔记(一百三十五)应用栏布局AppBarLayout>阐述了如何把Toolbar往上滚动,那 ...

  5. Android开发笔记(一百三十五)应用栏布局AppBarLayout

    应用栏布局AppBarLayout Android5.0推出工具栏Toolbar用来替代ActionBar,灵活性和易用性大大增强,有关Toolbar的详细介绍参见< Android开发笔记(一 ...

  6. [搬运]一百三十四 - TikTok原评论区搬运(机翻)

    [搬运]女装大佬!一百三十四_哔哩哔哩_bilibili https://www.tiktok.com/@pxtxrparkxr/video/6686479765626424581 丁香

  7. 计算机网络 - 练习(一百三十八)

    计算机网络 练习(一百三十八) 关于网络安全,以下说法中正确的是(). A. 使用无线传输可以防御网络监听 B. 木马是一种蠕虫病毒 C. 使用防火墙可以有效地防御病毒 D. 冲击波病毒利用 Wind ...

  8. 动态规划解题思路与总结(三万字)

    动态规划 前言 手把手如何写动态规划 最长路径 网格 最长上升子序列问题 求最长上升子序列 最长非严格递增子序列 至少修改多少次能将序列变为上升序列 最长公共上升子序列 分级问题 移动服务 传纸条 排 ...

  9. python四位玫瑰数的解题思路_入门python知识点总结以及15道题的解题思路分析

    知识点总结python 1.序列app 操做符ide x in s 若是x是列表s的元素,返回True,不然False s + t 链接两个序列s和t s*n或者n*s 将序列s复制n次 s[i] 返 ...

最新文章

  1. 不同真菌物种注释数据库对群落组成的影响
  2. 《女性的选择》--[日]今野由梨
  3. 一起学Hadoop——Hadoop的前世今生
  4. db2联邦数据库 linux,DB2创建联邦数据库
  5. ionic 完美仿微信摇一摇
  6. .团队组建及项目启动
  7. js里的null 与undefined
  8. SpringBoot编写HelloWorld-new
  9. spring data jpa是什么?
  10. 基于android公交车线路查询论文文献,本科毕业论文---基于android的手机公交线路查询系统.doc...
  11. 【计算机网络复习 数据链路层】3.4.4 选择重传协议(SR)
  12. Keil(MDK-ARM-STM32)系列教程(一)_新建软件工程详细过程
  13. opencv android 羽化,学习OpenCV:滤镜系列(15)——羽化(模糊边缘)
  14. NP、NP-完全、NP-难问题
  15. Java代码TkMyBatis通用Mapper中新增数据时同时获取自增主键ID,与适用uuid 做主键时获取 id
  16. oracle12c asmfd,Oracle 12c新特性--ASMFD(ASM Filter Driver)特性
  17. PHP漏洞全解—————9、文件上传漏洞
  18. 关于《windows游戏编程大师技巧》的源代码
  19. 简明 jieba 中文分词教程
  20. Python写的一个文件生成器脚本

热门文章

  1. 2张图教你认识世界人口分布
  2. 多卡聚合路由器5G+4G是什么意思
  3. Sentinel Dubbo 适配器看限流与熔断(实战思考篇)
  4. Origin画甘特图
  5. [转]马化腾:如何从“较好”到“最好”
  6. 论文中写伪代码的工具
  7. 计算机硬件和软件之间的区别
  8. java 批次号,java重复批次执行
  9. 5.03GEN-B发布!PSP 2000v3/3000最新自制系统
  10. 求阶乘问题c语言编程,求阶乘问题