coding-interview|September 01, 2020|2 min read

Single Number - Leet Code Solution

TL;DR

XOR all elements together — pairs cancel out (a ^ a = 0), leaving only the single number. O(n) time, O(1) space, no extra data structures.

Single Number - Leet Code Solution

Problem Statement

Given a non-empty array of integers, every element appears twice except for one. Find that single one.

Example

Input: [2,2,1]
Output: 1

Input: [4,1,2,1,2]
Output: 4

Solution using Extra Memory

We can take help of HashMap where we can save numbers and their counts.

  • In first iteration, just fill this HashMap
  • Iterate over this HashMap, and find the number whose count is not 2

Code

public int singleNumber_extraMemory(int[] nums) {
   int l = nums.length;
   
   Map<Integer, Integer> map = new HashMap<Integer, Integer>();
   for (int i=0; i<l; i++) {
      Integer count = map.get(nums[i]);
      if (count == null) {
         count = 1;
      }
      else {
         count ++;
      }
      
      map.put(nums[i], count);
   }
   
   for (Integer key : map.keySet()) {
      if (map.get(key) != 2) {
         return key;
      }
   }
   return -1;
}

Complexity

The complexity of above code is O(n)

Solution using Sorting

If we can sort the numbers, then we will have all pair of numbers adjascent to each other.
Then, we can check pair of numbers where they are not equal.

Code

public int singleNumber_sort(int[] nums) {
   int l = nums.length;
   
   Arrays.sort(nums);
   int i=0;
   while (i<l-1) {
      if (nums[i] != nums[i+1]) {
         return nums[i];
      }
      
      i += 2;
   }
   //check for last element
   if (l % 2 == 1) {
      return nums[l-1];
   }
   return -1;
}

Complexity

Since we are sorting, and iterating over array once. The complexity is O(nlogn)

Solution using Simple Maths

Assuming our array has all pairs. i.e. we don’t have a single number. Then, following is true:

2 (sum of unique numbers) = (sum of all numbers)

Now, if we know one of the number is missing in pairs. Following must be true:

2 (sum of unique numbers) - (sum of all numbers) = Missing Number

Lets take a look at example:

#input [2, 2, 1]

2 * (2 + 1) - (2 + 2 + 1)
= 6 - 5 
= 1
Result = 1

#Another example
# input [4,1,2,1,2]
2 * (4 + 1 + 2) - (4+1+2+1+2)
= 14 - 10
= 4
Result = 4

Code

public int singleNumber(int[] nums) {
   int l = nums.length;
   Set<Integer> set = new HashSet<>();
   
   int sum = 0;
   int uniqueElementSum = 0;
   
   for (int i=0; i<l; i++) {
      if (!set.contains(nums[i])) {
         set.add(nums[i]);
         uniqueElementSum += nums[i];
      }
      
      //all sum
      sum += nums[i];
   }
   
   return 2 * uniqueElementSum - sum;
}

We require a HashSet just to check for unique elements.

Complexity

The complexity is O(n)

Related Posts

Replace all spaces in a string with %20

Replace all spaces in a string with %20

Problem Statement Replace all spaces in a string with ‘%20’ (three characters…

Valid Palindrome - Leet Code Solution

Valid Palindrome - Leet Code Solution

Problem Statement Given a string, determine if it is a palindrome, considering…

Valid Anagrams - Leet Code Solution

Valid Anagrams - Leet Code Solution

Problem Statement Given two strings s and t , write a function to determine if t…

Rotate Image - Leet Code Solution

Rotate Image - Leet Code Solution

Problem Statement You are given an n x n 2D matrix representing an image, rotate…

Move Zeroes - Leet Code Solution

Move Zeroes - Leet Code Solution

Problem Statement Given an array nums, write a function to move all 0’s to the…

Plus One - Leet Code Solution

Plus One - Leet Code Solution

Problem Statement Given a non-empty array of digits representing a non-negative…

Latest Posts

Claude Code Skills — Build a Better Engineering Workflow with AI-Powered Code Reviews, Security Scans, and More

Claude Code Skills — Build a Better Engineering Workflow with AI-Powered Code Reviews, Security Scans, and More

Most developers use Claude Code like a search engine — ask a question, get an…

Building an AI Voicebot for Visitor Check-In — A Practical Guide to Handling the Messy Parts

Building an AI Voicebot for Visitor Check-In — A Practical Guide to Handling the Messy Parts

Every office lobby has the same problem: a visitor walks in, nobody’s at the…

Server Security Best Practices — Complete Hardening Guide for Production Systems

Server Security Best Practices — Complete Hardening Guide for Production Systems

Every breach post-mortem tells the same story: an unpatched service, a…

Staff Engineer Study Plan for MAANG Interviews — The Complete 12-Week Roadmap

Staff Engineer Study Plan for MAANG Interviews — The Complete 12-Week Roadmap

If you’re a Senior Engineer (L5) preparing for Staff (L6+) roles at MAANG…

XSS and CSRF Explained — The Complete Guide with Real Attack Examples and Defenses

XSS and CSRF Explained — The Complete Guide with Real Attack Examples and Defenses

XSS and CSRF have been in the OWASP Top 10 for over a decade. They’re among the…

OWASP Top 10 (2021) — Every Vulnerability Explained with Code

OWASP Top 10 (2021) — Every Vulnerability Explained with Code

The OWASP Top 10 is the industry standard for web application security risks. If…