20190811:只出现一次的数字(四种解法)
只出现一次的数字
- 题目
- 大致思路
- 代码实现
题目
大致思路
方法一:先排序,然后2个2个进行遍历,因为排序之后这个单独的数字一定在偶数下标对应的位置,找到不相同的这两个相邻数字,这两个数字中位于偶数下标的即为那个单独的数字,如果遍历结束还没找到,则为最后一个数字,注意遍历的时候只遍历到长度-1处即可。
方法二:利用set集的特性,来进行实现,出现重复的就删除出set,对对碰的思想,直到遍历完,set中剩余的那一个就是单独的那个数字。
方法三:差值法,排序后,单独的那个数字一定在偶数下标处,将所有偶数下标数字加起来减去所有奇数下标数字的和即为所求值。
方法四:异或法,该题的最佳解法:同的数字异或为0,0与任何数字异或,结果为该数字,即为那个但难度的数字
代码实现
class Solution {public int singleNumber(int[] nums) {/*遍历法,先排序,再遍历 10msArrays.sort(nums);for(int i = 0;i<nums.length-1;i+=2){if(nums[i] != nums[i+1]){return nums[i];}}return nums[nums.length-1];*//* 方法二:利用set集的特性,来进行实现,出现重复的就删除出set,对对碰的思想,直到遍历完,set中剩余的那一个就是 单独的那个数字 20msSet<Integer> set = new HashSet<>();for(int i = 0;i<nums.length;i++){if(!set.add(nums[i])){set.remove(nums[i]);}}return set.iterator().next();*//*方法三:差值法:排序后,单独的那个数字一定在偶数下标处,将所有偶数下标数字加起来减去所有奇数下标数字的和,//即为所求的值。 10msArrays.sort(nums);int count = 0;for(int i = 0;i<nums.length;i++){count = i % 2 == 0 ? count+nums[i] : count-nums[i];}return count;*///*方法四:异或法,相同的数字异或为0,0与任何数字异或,结果为该数字,1ms,异或法应该为最佳解法。int result = 0;for(int i = 0;i<nums.length;i++){result = result ^ nums[i];}return result;}
}
20190811:只出现一次的数字(四种解法)相关推荐
- 算法-寻找数组中的重复值,四种解法
算法-寻找数组中的重复值 寻找数组中的重复值 寻找数组中的重复值 题目来源于:Leetcode-287.本题归类到简单我无法理解-要满足四个条件需要用很特定的解法,面试中要是用到的话很可能是在给自己挖 ...
- 奖券数目c语言答案,2015 年蓝桥杯 C 语言 B 组省赛第 1 题: 奖券数目 (四种解法 + 详细分析)...
题目 奖券数目 有些人很迷信数字,比如带"4"的数字,认为和"死"谐音,就觉得不吉利. 虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求.某抽奖活动的奖券号码 ...
- 【剑指Offer】剪绳子问题——四种解法
剪绳子问题--四种解法 题目描述: 输入描述: 返回值描述: 示例1: 解题思路: 方法1:暴力递归 方法2:记忆化递归 方法三:动态规划 方法四,数学原理 题目描述: 给你一根长度为n的绳子,请把绳 ...
- 销售额超过公司均值的优秀经销商?SQL比例问题之分组比较的四种解法
分组比较是看起来比较简单,但是写起来比较麻烦的问题,一般就是先进行两个不同分组计数.求和.求均值,然后两个均值作比较,这样就涉及表连接和判断,写的代码量就比其他问题多很多.它与连续问题.排名问题和累加 ...
- 四种解法——求子序列的最大连续子序和(普通解法、求和解法、分治法、O(n)级解法)(面试经典题)
励志用少的代码做高效表达 在这四种解法里,解法一是通法,可以学到规律和知识,做基础之用:解法二在解法一的基础上做改进,锻炼思维:解法三则是大名鼎鼎的分治法,涉及到递归的知识,算是"高效算法设 ...
- python整数拆分dp算法_整数拆分问题的四种解法【转载】
http://blog.csdn.net/u011889952/article/details/44813593 整数拆分问题的四种解法 原创 2015年04月01日 21:17:09 整数划分问题是 ...
- 八皇后问题详解(四种解法)
所有源码都在github上(https://github.com/seasonyao/eight_queen_question) 如果你去百度百科八皇后这个问题,你会发现人家也是历史上有头有脸的一个问 ...
- 最长公共子序列长度的四种解法
一.题目:求两个字符序列的最长公共字符子序列.给定两个字符串,求解这两个字符串的最长公共子序列(Longest Common Sequence).比如字符串1:BDCABA:字符串2:ABCBDAB, ...
- 青蛙跳台阶c语言递归函数,青蛙跳台阶问题的四种解法
http://raychase.iteye.com/blog/1337359 题目:一只青蛙一次可以跳1级台阶,也可以跳2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 这道题还被ITEye放在了博 ...
最新文章
- 怎样学好Oracle子查询,Oracle学习(六):子查询
- Android Studio在Git上将项目推送到新的Url地址中
- mysql timestamp 插入null报错_读MySQL 5.7文档11.2 Date and Time Data Types总结
- Canvas 学习笔记1
- 前端学习(477):前端简介1
- 敏捷软件开发:原则、模式与实践——第12章 ISP:接口隔离原则
- linux防火墙配置连接atlas,ATLAS在ubuntu下的安装使用
- 金蝶k3财务接口_金蝶云为企业成长而生,让工作更高效!
- Java zip and unzip demo
- itunes备份包括哪些内容_建筑工程的招标包括哪些内容?
- Oracle EBS R12 电子技术参考手册 - eTRM (电子文档)
- workbench应力应变曲线_ANSYS WORKBENCH后处理中各种应力结果的详细说明
- 挖掘数字资产,生意增长是本质,但数据创新仍有难题待解 | 2022全球数字价值峰会...
- R语言|lollipop plot
- Webots学习笔记—距离传感器的介绍和四轮小车的避障
- 即时与及时有什么区别_即时与及时有什么区别?
- C#练习题答案: 字母战争 - 核打击【难度:3级】--景越C#经典编程题库,1000道C#基础练习题等你来挑战
- Google Bard vs. ChatGPT 哪家强?结果一目了然
- GVM踩坑记录之 Failed to find port_list ‘33d0cd82-57c6-11e1-8ed1-406186ea4fc5‘
- Logic Pro X for Mac(专业音频编辑制作工具)