码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 代码随想录二刷 Day36


    1005.K次取反后最大化的数组和

    那么本题的解题步骤为:

    • 第一步:将数组按照绝对值大小从大到小排序,注意要按照绝对值的大小
    • 第二步:从前向后遍历,遇到负数将其变为正数,同时K--
    • 第三步:如果K还大于0,那么反复转变数值最小的元素,将K用完
    • 第四步:求和

    这个题的sort部分写法不会进行绝对值排序;

    1. class Solution {
    2. static bool cmp(int a, int b) {
    3. return abs(a) > abs(b);
    4. }
    5. public:
    6. int largestSumAfterKNegations(vector<int>& nums, int k) {
    7. sort(nums.begin(), nums.end(), cmp);
    8. for( int i = 0; i< nums.size(); i++) {
    9. if (nums[i] < 0 && k > 0){
    10. nums[i] = -nums[i];
    11. k--;
    12. }
    13. }
    14. sort(nums.begin(), nums.end());
    15. while (k > 0) {
    16. nums[0] = - nums[0];
    17. k--;
    18. }
    19. int result = 0;
    20. for (int j = 0; j < nums.size(); j++){
    21. result += nums[j];
    22. }
    23. return result;
    24. }
    25. };

    134. 加油站

    首先如果总油量减去总消耗大于等于零那么一定可以跑完一圈,说明 各个站点的加油站 剩油量rest[i]相加一定是大于等于零的。

    1. class Solution {
    2. public:
    3. int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {
    4. //vector rest();这么写不对,因为定义了一个vector但是没往里面插入数,所以下面会接触空vector
    5. vector<int> rest(gas.size());
    6. int current_sum = 0;
    7. int start_position = 0;
    8. int total_sum = 0;
    9. for (int i = 0; i < gas.size(); i++) {
    10. rest[i] = gas[i] - cost[i];
    11. total_sum += rest[i];
    12. }
    13. if (total_sum < 0) return -1;
    14. for( int j = 0; j < rest.size(); j++) {
    15. current_sum += rest[j];
    16. if (current_sum <0) {
    17. start_position = j+1;
    18. current_sum = 0;
    19. }
    20. }
    21. return start_position;
    22. }
    23. };

    135. 分发糖果

    1. class Solution {
    2. public:
    3. int candy(vector<int>& ratings) {
    4. vector<int> candy_number(ratings.size(), 1);
    5. for (int i = 1; i < ratings.size(); i++) { //注意这句要从1开始
    6. if (ratings[i] > ratings[i - 1]) candy_number[i] = candy_number[i -1] + 1;
    7. }
    8. for (int i = ratings.size() - 2; i >= 0; i--) { //注意这句从减2开
    9. if (ratings[i] > ratings[i + 1]) candy_number[i] = max(candy_number[i], candy_number[i + 1] + 1);
    10. }
    11. int result = 0;
    12. for (int i = 0; i < candy_number.size(); i++ ){
    13. result += candy_number[i];
    14. }
    15. return result;
    16. }
    17. };

  • 相关阅读:
    Java面试八股文之暑假合集
    5分钟,ArcGIS 简单几步从天地图中提取出建筑物轮廓的矢量数据
    论文笔记:ST2Vec: Spatio-Temporal Trajectory SimilarityLearning in Road Networks
    Qt6.2 Android 无线调试设置 (Readmi 9A为例) [Windows]
    智慧经营| 物业数字化管理系统
    人工神经网络算法的应用,人工智能神经网络算法
    C/C++校运动会成绩管理系统
    3D项目中用到的一些算法
    架构师聊编程-技术晋级篇
    为什么sleeping的会话会造成阻塞
  • 原文地址:https://blog.csdn.net/weixin_43908951/article/details/133852927
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号