珠海企业网站建设公,html菜鸟,电子项目外包平台,新类型的网站提示#xff1a;文章写完后#xff0c;目录可以自动生成#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、加油站二、分发糖果三、柠檬水找零四、根据身高重建队列1.引入库2.读入数据 总结 前言
提示#xff1a;这里可以添加本文要记录的大概内容#xff1a;
… 提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档 文章目录 前言一、加油站二、分发糖果三、柠檬水找零四、根据身高重建队列1.引入库2.读入数据 总结 前言
提示这里可以添加本文要记录的大概内容
今天是跟着代码随想录刷题的第三十五天主要是学习了加油站分发糖果柠檬水找零和根据身高重建队列这四道题。 提示以下是本篇文章正文内容下面案例可供参考
一、加油站
暴力解法
class Solution {
public:int canCompleteCircuit(vectorint gas, vectorint cost) {int i;vectorint a;int result0;int start;int finish1;int b;for(i0;igas.size();i){a.push_back(gas[i]-cost[i]);}for(i0;ia.size();i){resultresulta[i];}if(result0) return -1;for(start0;starta.size();start){result0;for(istart;ia.size();i){resultresulta[i];if(result0) {finish0;break;}}for(i0;istart;i){resultresulta[i];if(result0) {finish0;break;}}if(finish1) {break;}finish1;}return start;}
};贪心算法
class Solution {
public:int canCompleteCircuit(vectorint gas, vectorint cost) {int curSum 0;int totalSum 0;int start 0;for (int i 0; i gas.size(); i) {curSum gas[i] - cost[i];totalSum gas[i] - cost[i];if (curSum 0) { // 当前累加rest[i]和 curSum一旦小于0start i 1; // 起始位置更新为i1curSum 0; // curSum从0开始}}if (totalSum 0) return -1; // 说明怎么走都不可能跑一圈了return start;}
};
贪心算法就是我就一直累加如果小于0就说明前面这些都不可能是起点因为如果是起点那么起点到这大于0整个小于0前面第一段也小于0说明有更早的起点然后因为可以保持一直是最早的正数所以这里就是最合适的起点的位置可以累积正数。
二、分发糖果
思路先从左到右保证如果右边大于左边右边加1不然就保持1如果左边大于右边左边加1和原本的比大小取大的就能保证两边了。 代码
class Solution {
public:int candy(vectorint ratings) {int aratings.size();vectorint result(ratings.size(), 1);int result10;int i;for(i0;iresult.size()-1;i){if(ratings[i1]ratings[i]){result[i1]result[i]1;}}for(iresult.size()-1;i0;i--){if(ratings[i-1]ratings[i]){result[i-1]max(result[i-1],result[i]1);}}for(i0;iresult.size();i){result1result1result[i];}return result1;}
};
三、柠檬水找零
思路这道题就是思考柠檬水所有可能得情况来一种情况一种情况分析就可以了 代码
class Solution {
public:bool lemonadeChange(vectorint bills) {int five0,ten0,i0;for(i0;ibills.size();i){if(bills[i]5) five;if(bills[i]10){if(five0) return false;else ten,five--;}if(bills[i]20){if(five!0ten!0){five--;ten--;}else if(ten0five2){fivefive-3;}else return false;} }return true;}
};
四、根据身高重建队列
思路 这道题就是按照身高由高到低先排个序然后如果身高一样的就第二位小的排序首先得建立这个排序的思路按照这个顺序排序以后然后这种情况就能保证前面的和自己一样大或者比自己更大再按照第二位看是不是这个排序比如第二位是3就说明前面有三个比我要大所以应该排在第三的位置。 所以看第二位是几就排在那个位置就行。 版本一
class Solution {
public:static bool cmp(const vectorint a, const vectorint b) {if (a[0] b[0]) return a[1] b[1];return a[0] b[0];}vectorvectorint reconstructQueue(vectorvectorint people) {sort (people.begin(), people.end(), cmp);vectorvectorint que;for (int i 0; i people.size(); i) {int position people[i][1];que.insert(que.begin() position, people[i]);}return que;}
};
版本二 代码
class Solution {
public:// 身高从大到小排身高相同k小的站前面static bool cmp(const vectorint a, const vectorint b) {if (a[0] b[0]) return a[1] b[1];return a[0] b[0];}vectorvectorint reconstructQueue(vectorvectorint people) {sort (people.begin(), people.end(), cmp);listvectorint que; // list底层是链表实现插入效率比vector高的多for (int i 0; i people.size(); i) {int position people[i][1]; // 插入到下标为position的位置std::listvectorint::iterator it que.begin();while (position--) { // 寻找在插入位置it;}que.insert(it, people[i]);}return vectorvectorint(que.begin(), que.end());}
};
1.引入库
代码如下示例
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings(ignore)
import ssl
ssl._create_default_https_context ssl._create_unverified_context2.读入数据
代码如下示例
data pd.read_csv(https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv)
print(data.head())该处使用的url网络请求的数据。 总结
提示这里对文章进行总结 例如以上就是今天要讲的内容本文仅仅简单介绍了pandas的使用而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。