文章目录
  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
  5. 5. 7. Reverse Integer
    1. 5.1. Example1
    2. 5.2. Example2
    3. 5.3. Example3
    4. 5.4. Solution

文档更新说明

  • 最后更新 2018年03月05日
  • 首次更新 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
}
}

7. Reverse Integer

Given a 32-bit signed integer, reverse digits of an integer.

Example1

Input: 123
Output:  321 

Example2

Input: -123
Output:  -321 

Example3

Input: 120
Output:  21 

Solution

  分成正负数处理,速度最快.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
class Solution {
func reverse(_ x: Int) -> Int {
var revX = 0
var vX: Int
if x > 0 {
vX = x
while vX > 0 {
if revX != 0 {
revX *= 10
}
revX += vX % 10
vX /= 10
}
}else if x < 0 {
vX = -x
while vX > 0 {
if revX != 0 {
revX *= 10
}
revX += vX % 10
vX /= 10
}
revX = -revX
}

if revX > Int32.max || revX < Int32.min {
return 0
}else {
return revX
}
}
}

文章目录
  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
  5. 5. 7. Reverse Integer
    1. 5.1. Example1
    2. 5.2. Example2
    3. 5.3. Example3
    4. 5.4. Solution