码农知识堂 - 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. };

  • 相关阅读:
    网站SEO标题撰写技巧,做到这些可以提高点击率
    Java实验十三
    面试了1个月连续失败4次,自动化测试真没想象的那么简单
    [量化投资-学习笔记007]Python+TDengine从零开始搭建量化分析平台-布林带
    Java并发编程——线程间通信
    RISC-V 芯片架构新规范
    Linux上如何安装tomcat服务器?如何在Linux上安装Linux服务器?
    [附源码]计算机毕业设计springboot本地助农产品销售系统
    TreeUtils工具类一行代码实现列表转树【第三版优化】 三级菜单 三级分类 附视频
    pdf添加书签的软件,分享3个实用的软件!
  • 原文地址: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号