260. Single Number III

来源:互联网 发布:快速选择算法求中位数 编辑:程序博客网 时间:2024/04/20 11:00

问题描述:
Given an array of numbers nums, in which exactly two elements appear only once and all the other elements appear exactly twice. Find the two elements that appear only once.

For example:

Given nums = [1, 2, 1, 3, 2, 5], return [3, 5].

我的解决思路:
我采用的是类似于表达式栈的形式来解这一问题的,当将一个新的元素压入栈之前,比较该值与栈顶元素的值是否相等,如果相等,则弹出栈顶元素。最后栈只剩下两个不等的数。

java代码:

public class Solution {    public int[] singleNumber(int[] nums) {        Arrays.sort(nums);        Stack s = new Stack();        int length = nums.length;        int temp;        for(int i=0;i<length;i++){            if(s.empty()){                s.push(nums[i]);                continue;            }            temp = (Integer)s.peek();            if(nums[i]==temp)                s.pop();            else                s.push(nums[i]);            /*s.push(nums[i]);            if(temp==nums[i]){                s.pop();s.pop();            }*/        }        return new int[]{(Integer)s.pop(),(Integer)s.pop()};    }}

关于Single Number I 与Single Number II 的相关问题,可以参考:

http://blog.csdn.net/yyg_wtf/article/details/51213461
http://blog.csdn.net/yyg_wtf/article/details/51213664

0 0