1. 程式人生 > 其它 >LeetCode 13——只出現一次的數字

LeetCode 13——只出現一次的數字

技術標籤:LeetCodeleetcode演算法hashmap

https://leetcode-cn.com/problems/single-number/

1、使用HashMap

public int singleNumber(int[] nums) {
        HashMap hashMap = new HashMap();
		for(int x:nums) {
			hashMap.put(x, (int)hashMap.getOrDefault(x, 0) + 1);
		}
		for(int y:(Set<Integer>)hashMap.keySet()) {
if((int)hashMap.get(y) == 1) { return y; } } return 0; }

在這裡插入圖片描述
時間複雜度:O(n)
空間複雜度:O(n^2)

HashMap是通過所記錄的Value值來確定是否重複的!!

2、暴力解法

class Solution {
    public int singleNumber(int[] nums) {
        for(int i=0; i<nums.length;i++) {
			for(int j=0; j<nums.length; j++) {
				if(nums[j] == nums[
i] && j!=i) { break; }else if(j==nums.length-1) { return nums[i]; } } } return 0; } }

在這裡插入圖片描述時間複雜度:O(n^2)
空間複雜度:O(n)

3、異或:相同為0,不同為1

class Solution {
    public int singleNumber(int[] nums) {
        int k = nums[0];
        for(int i=1; i<nums.length; i++) {
			k =
k ^ nums[i]; } return k; } }

在這裡插入圖片描述
時間複雜度:O(n)
空間複雜度:O(n)