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

力扣爆刷第102天之hot100五连刷96-100

力扣爆刷第102天之hot100五连刷96-100

文章目录

      • 力扣爆刷第102天之hot100五连刷96-100
      • 一、136. 只出现一次的数字
      • 二、169. 多数元素
      • 三、75. 颜色分类
      • 四、31. 下一个排列
      • 五、287. 寻找重复数

一、136. 只出现一次的数字

题目链接:https://leetcode.cn/problems/single-number/description/?envType=study-plan-v2&envId=top-100-liked
思路:本题利用数学技巧,利用异或运算,一个数与0异或运算的结果还是它自身,此外,不同异或为1,相同为0,不同数异或会有一些大小变化,再进行相同数异或会减小掉变化。

class Solution {public int singleNumber(int[] nums) {int res = 0;for(int n : nums) {res ^= n;}return res;}
}

二、169. 多数元素

题目链接:https://leetcode.cn/problems/majority-element/description/?envType=study-plan-v2&envId=top-100-liked
思路:投票算法,当前数如果重复出现则加1,出现别的数则减1,为0换下一个数。

class Solution {public int majorityElement(int[] nums) {int count = 0, res = 0;for(int n : nums) {if(count == 0) {res = n;}count += n == res ? 1 : -1;}return res;}
}

三、75. 颜色分类

题目链接:https://leetcode.cn/problems/sort-colors/description/?envType=study-plan-v2&envId=top-100-liked
思路:3个数要排序,先0和1交换排序,然后再1和2交换排序。

class Solution {public void sortColors(int[] nums) {int zero = 0;for(int i = 0; i < nums.length; i++) {if(nums[i] == 0) {int temp = nums[zero];nums[zero] = nums[i];nums[i] = temp;zero++;}}int one = zero;for(int i = zero; i < nums.length; i++) {if(nums[i] == 1) {int temp = nums[one];nums[one] = nums[i];nums[i] = temp;one++;}}}
}

四、31. 下一个排列

题目链接:https://leetcode.cn/problems/next-permutation/description/?envType=study-plan-v2&envId=top-100-liked
思路:求下一个排列,是求下一个最小的大于它的值,基本原理从下图的5, 7, 6, 4处进行寻找,寻找最小的一个大于它的数,自然要从右边开始找,找第一个凹陷处,nums[i] < nums[i+1],此时i= 5,然后再从右边找第一个大于5 的数,为6,也就是nums[j]>nums[i],此刻这个6就是最小的一个大于它的数,然后交换,交换后[i, end]为单调递减,然后翻转即可。
在这里插入图片描述

class Solution {public void nextPermutation(int[] nums) {int i = nums.length - 2;while(i >= 0 && nums[i] >= nums[i+1]) {i--;}if(i >= 0) {for(int j = nums.length-1; j >= 0; j--) {if(nums[j] > nums[i]) {swap(nums, i, j);break;}}}reverse(nums, i+1, nums.length-1);}void swap(int[] nums, int i, int j) {int temp = nums[i];nums[i] = nums[j];nums[j] = temp;}void reverse(int[] nums, int i, int j) {while(i < j) {swap(nums, i, j);i++;j--;}}
}

五、287. 寻找重复数

题目链接:https://leetcode.cn/problems/find-the-duplicate-number/description/?envType=study-plan-v2&envId=top-100-liked
思路:寻找重复数,给定一个包含 n + 1 个整数的数组 nums ,其数字都在 [1, n] 范围内(包括 1 和 n)。这个是题目的描述,说明最大的数作为索引,也仅仅是数组结尾,所以可以把数组元素和索引建立联系,构建逻辑上的循环数组,和链表上的循环数组一样,使用快慢指针,慢的走一步,快的走两步,相遇就是环的入口,只不过此时拿到的是数组里的数,然后再有一个从起点出发,相遇即可拿到环的入口。

class Solution {public int findDuplicate(int[] nums) {int slow = 0, fast = 0;slow = nums[slow];fast = nums[nums[fast]];while(slow != fast) {slow = nums[slow];fast = nums[nums[fast]];}int one = 0;while(one != slow) {one = nums[one];slow = nums[slow];}return one;}
}

相关文章:

  • 【leetcode】67.二进制求和
  • 2733: 【搜索】【广度优先】 马遍历棋盘
  • 一分钟了解JAVA语言
  • RuoYi-Vue开源项目2-前端登录验证码生成过程分析
  • C++提高笔记(五)---STL容器(set/multiset、map/multimap)
  • flutter 局部view更新,dialog更新进度,dialog更新
  • 【热门话题】深入浅出:npm常用命令详解与实践
  • Redis监控工具
  • mac安装rust开发环境,使用brew安装和全局配置
  • 【GPT-SOVITS-03】SOVITS 模块-生成模型解析
  • 【NTN 卫星通信】 TN和多NTN配合的应用场景
  • shardingsphere-elastic-job-ui 管理界面安装
  • 数据分析-Pandas数据分类的转换控制
  • 速盾cdn:cdn节点缓存内容不一致怎么办?
  • 面试经典-MySQL篇
  • Android框架之Volley
  • CSS中外联样式表代表的含义
  • JAVA SE 6 GC调优笔记
  • JavaScript设计模式系列一:工厂模式
  • k个最大的数及变种小结
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • Spring核心 Bean的高级装配
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • uva 10370 Above Average
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 初探 Vue 生命周期和钩子函数
  • 想写好前端,先练好内功
  • 小程序 setData 学问多
  • 一道闭包题引发的思考
  • ​flutter 代码混淆
  • #13 yum、编译安装与sed命令的使用
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (过滤器)Filter和(监听器)listener
  • (汇总)os模块以及shutil模块对文件的操作
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)socket Aio demo
  • (转)为C# Windows服务添加安装程序
  • (转载)从 Java 代码到 Java 堆
  • ***测试-HTTP方法
  • **python多态
  • .jks文件(JAVA KeyStore)
  • .net操作Excel出错解决
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)
  • .Net环境下的缓存技术介绍
  • .NET设计模式(8):适配器模式(Adapter Pattern)
  • .net下的富文本编辑器FCKeditor的配置方法
  • .Net语言中的StringBuilder:入门到精通
  • .Net中wcf服务生成及调用