文章目录
  1. 1. 文档更新说明
  2. 2. 前言
  3. 3. 561. Array Partition I
    1. 3.1. Example1
    2. 3.2. Note
    3. 3.3. Infer
    4. 3.4. Solution
  4. 4. 461. Hamming Distance
    1. 4.1. Example1
    2. 4.2. Note
    3. 4.3. Solution

文档更新说明

  • 最后更新 无
  • 首次更新 2017年05月16日

前言

  使用Swift语言完成LetCode题目,就不多介绍了.

561. Array Partition I

Given an array of 2n integers, your task is to group these integers into n pairs of integer, say (a1, b1), (a2, b2), …, (an, bn) which makes sum of min(ai, bi) for all i from 1 to n as large as possible.

Example1

Input: [1,4,3,2]
Output: 4
Explanation: n is 2, and the maximum sum of pairs is 4.

Note

  1. n is a positive integer, which is in the range of [1, 10000].
  2. All the integers in the array will be in the range of [-10000, 10000].

Infer

see. 推导方法

Solution

1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
func arrayPairSum(_ nums: [Int]) -> Int {
var sum = 0
let sortedNums = nums.sorted(by: {a,b in return a < b})
for (index, value) in sortedNums.enumerated() {
if index % 2 == 0 {
sum += value
}
}
return sum
}
}

461. Hamming Distance

The Hamming distance between two integers is the number of positions at which the corresponding bits are different.

Given two integers x and y, calculate the Hamming distance.

Example1

Input: x = 1, y = 4

Output: 2

Explanation:
1   (0 0 0 1)
4   (0 1 0 0)
       ↑   ↑
The above arrows point to positions where the corresponding bits are different.

Note

0 ≤ x, y < 2^31.

Solution

  先将x和y做异或运算,再统计得到的二进制数字里面有多少个1(采用清1法统计)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution {
func hammingDistance(_ x: Int, _ y: Int) -> Int {
var num = x ^ y
var count = 0
for _ in 0 ... UInt32.max {
if num != 0 {
count += 1
}else {
break
}
num &= (num - 1)
}
return count
}
}
文章目录
  1. 1. 文档更新说明
  2. 2. 前言
  3. 3. 561. Array Partition I
    1. 3.1. Example1
    2. 3.2. Note
    3. 3.3. Infer
    4. 3.4. Solution
  4. 4. 461. Hamming Distance
    1. 4.1. Example1
    2. 4.2. Note
    3. 4.3. Solution