博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode刷题:137. Single Number II
阅读量:4040 次
发布时间:2019-05-24

本文共 1503 字,大约阅读时间需要 5 分钟。

LeetCode刷题:137. Single Number II

原题链接:

Given a non-empty array of integers, every element appears three times except for one, which appears exactly once. Find that single one.

Note:

Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?

Example 1:

Input: [2,2,3,2]

Output: 3
Example 2:

Input: [0,1,0,1,0,1,99]

Output: 99


算法设计

package com.bean.algorithm.basic;import java.util.HashSet;public class SingleNumberII {	public static int singleNumber(int[] nums) {		HashSet set1 = new HashSet();		HashSet set2 = new HashSet();		for (int i = 0; i < nums.length; i++) {			if (set1.contains(nums[i])) {				set2.add(nums[i]);			} else {				set1.add(nums[i]);			}		}		int i = 0;		for (Object o : set1) {			if (set2.contains(o)) {			} else {				i = (Integer) o;			}		}		return i;	}	public static void main(String[] args) {		// TODO Auto-generated method stub		int[] arrays=new int[] {0,1,0,1,0,1,99};		int ANSWER = singleNumber(arrays);		System.out.println("ANSWER = "+ANSWER);	}}

程序运行结果:

ANSWER = 99

第二种算法设计

public static int singleNumber(int[] nums) {		if (nums == null || nums.length == 0)			return 0;		Arrays.sort(nums); // sort array		int i = 1;		while (i <= nums.length - 3) {			if (nums[i - 1] == nums[i] && nums[i] == nums[i + 1]) {				i += 3;			} else {				if (nums[i - 1] != nums[i] && nums[i] == nums[i + 1])					return nums[i - 1];				if (nums[i - 1] == nums[i] && nums[i] != nums[i + 1])					return nums[i + 1];			}		}		return nums[nums.length - 1];}

 

转载地址:http://fitdi.baihongyu.com/

你可能感兴趣的文章
Centos 7(Linux)环境下安装PHP(编译添加)相应动态扩展模块so(以openssl.so为例)
查看>>
fastcgi_param 详解
查看>>
Nginx配置文件(nginx.conf)配置详解
查看>>
标记一下
查看>>
IP报文格式学习笔记
查看>>
autohotkey快捷键显示隐藏文件和文件扩展名
查看>>
Linux中的进程
查看>>
学习python(1)——环境与常识
查看>>
学习设计模式(3)——单例模式和类的成员函数中的静态变量的作用域
查看>>
自然计算时间复杂度杂谈
查看>>
当前主要目标和工作
查看>>
使用 Springboot 对 Kettle 进行调度开发
查看>>
如何优雅的编程,lombok你怎么这么好用
查看>>
一文看清HBase的使用场景
查看>>
解析zookeeper的工作流程
查看>>
搞定Java面试中的数据结构问题
查看>>
慢慢欣赏linux make uImage流程
查看>>
linux内核学习(7)脱胎换骨解压缩的内核
查看>>
以太网基础知识
查看>>
慢慢欣赏linux 内核模块引用
查看>>