当前位置: 首页 > news >正文

leetcode每日一题46

134.加油站
贪心
1.油总量<耗油总量 无法跑完一圈
2.一旦在某个位置i的当前油量<耗油量 则从i+1作为起始点

class Solution {
public:int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {int curGas=0;int totalGas=0;int start =0;for(int i=0;i<gas.size();i++){curGas += gas[i]-cost[i];totalGas += gas[i]-cost[i];if(curGas<0){start = i+1;curGas=0;}}if(totalGas<0) return -1;return start;}
};

137.只出现一次的数字ii
哈希表

class Solution {
public:int singleNumber(vector<int>& nums) {unordered_map<int,int> hash;for(int i=0;i<nums.size();i++){hash[nums[i]]++;}int ans=0;for(auto [i, j]: hash){if(j==1){ans=i;break;}}return ans;}
};

应该开始写符合cpp11新特性的for循环了,在处理数组、容器时更方便
看题解,还有另一种方法:二进制

为了方便叙述,我们称「只出现了一次的元素」为「答案」。
由于数组中的元素都在 int(即 32 位整数)范围内,因此我们可以依次计算答案的每一个二进制位是 0 还是 1。
具体地,考虑答案的第 i 个二进制位(i 从 0 开始编号),它可能为 0 或 1。对于数组中非答案的元素,每一个元素都出现了 3 次,对应着第 i 个二进制位的 3 个 0 或 3 个 1,无论是哪一种情况,它们的和都是 3 的倍数(即和为 0 或 3)。因此:
答案的第 i 个二进制位就是数组中所有元素的第 i 个二进制位之和除以 3 的余数。
这样一来,对于数组中的每一个元素 x,我们使用位运算 (x >> i) & 1 得到 x 的第 i 个二进制位,并将它们相加再对 3 取余,得到的结果一定为 0 或 1,即为答案的第 i 个二进制位。

class Solution {
public:int singleNumber(vector<int>& nums) {int ans =0;for(int i=0;i<32;i++){int sum =0;for(int num:nums){sum += ((num>>i)&1);}if(sum%3)ans |= (1<<i);}return ans;}
};

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 《数据结构》(C语言版)第1章 绪论(下)
  • C语言 ——— 在控制台实现扫雷游戏(一次展开一片,递归实现)
  • java之静态内部类
  • 国内顶级 AI 的回答令人“贻笑大方”:看来苹果秃头码农们暂时还不会失业吧?
  • vue3+vite全局引入less变量和函数
  • playwrite今日头条自动发帖
  • 未授权访问漏洞
  • 对于泛型以及泛型擦除的理解
  • Ubuntu防火墙相关命令
  • 【轨物推荐】什么是科学?什么是技术?
  • 仓库管理系统(WMS)是什么?如何用手机RFID+扫码技术管理仓库?
  • 将本地微服务发布到docker镜像
  • vm虚拟机下安装CentOS7系统
  • 力扣第45题:跳跃游戏 贪心DP(C++)
  • 哈佛大学单细胞课程|笔记汇总 (二)
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • 【知识碎片】第三方登录弹窗效果
  • Create React App 使用
  • express + mock 让前后台并行开发
  • Java基本数据类型之Number
  • Less 日常用法
  • Mysql数据库的条件查询语句
  • Python进阶细节
  • Redux系列x:源码分析
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • 订阅Forge Viewer所有的事件
  • 如何解决微信端直接跳WAP端
  • 深入浅出Node.js
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 算法-插入排序
  • 物联网链路协议
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 自定义函数
  • elasticsearch-head插件安装
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • # 职场生活之道:善于团结
  • #1014 : Trie树
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • ${factoryList }后面有空格不影响
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • (10)STL算法之搜索(二) 二分查找
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (安卓)跳转应用市场APP详情页的方式
  • (二)学习JVM —— 垃圾回收机制
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (回溯) LeetCode 77. 组合
  • (七)Java对象在Hibernate持久化层的状态
  • (四)事件系统
  • (文章复现)基于主从博弈的售电商多元零售套餐设计与多级市场购电策略
  • (一)、软硬件全开源智能手表,与手机互联,标配多表盘,功能丰富(ZSWatch-Zephyr)
  • (一)UDP基本编程步骤
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版