Skip to content

Commit f8178fd

Browse files
committed
Add 338 Counting Bits
1 parent a32aec3 commit f8178fd

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

LeetcodeSwift.xcodeproj/project.pbxproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
0E6896781DD576C5006F10D3 /* 295_FindMedianFromDataStream.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E6896771DD576C5006F10D3 /* 295_FindMedianFromDataStream.swift */; };
2525
0E68967A1DD787E6006F10D3 /* QuickMedianTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E6896791DD787E6006F10D3 /* QuickMedianTest.swift */; };
2626
0E68967C1DD79478006F10D3 /* 223_RectangleArea.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E68967B1DD79478006F10D3 /* 223_RectangleArea.swift */; };
27+
0E68967E1DD7A57A006F10D3 /* 338_CountingBits.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E68967D1DD7A57A006F10D3 /* 338_CountingBits.swift */; };
2728
0E6CDE811D98A1CE00FB662F /* 72_EditDistance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E6CDE801D98A1CE00FB662F /* 72_EditDistance.swift */; };
2829
0E6CDE831D98BA4100FB662F /* ArrayExtensionTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E6CDE821D98BA4100FB662F /* ArrayExtensionTest.swift */; };
2930
0E6D9CDE1DD163430068A56A /* 143_ReorderList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E6D9CDD1DD163430068A56A /* 143_ReorderList.swift */; };
@@ -144,6 +145,7 @@
144145
0E6896771DD576C5006F10D3 /* 295_FindMedianFromDataStream.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = 295_FindMedianFromDataStream.swift; sourceTree = "<group>"; };
145146
0E6896791DD787E6006F10D3 /* QuickMedianTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = QuickMedianTest.swift; sourceTree = "<group>"; };
146147
0E68967B1DD79478006F10D3 /* 223_RectangleArea.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = 223_RectangleArea.swift; sourceTree = "<group>"; };
148+
0E68967D1DD7A57A006F10D3 /* 338_CountingBits.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = 338_CountingBits.swift; sourceTree = "<group>"; };
147149
0E6CDE801D98A1CE00FB662F /* 72_EditDistance.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = 72_EditDistance.swift; sourceTree = "<group>"; };
148150
0E6CDE821D98BA4100FB662F /* ArrayExtensionTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ArrayExtensionTest.swift; sourceTree = "<group>"; };
149151
0E6D9CDD1DD163430068A56A /* 143_ReorderList.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = 143_ReorderList.swift; sourceTree = "<group>"; };
@@ -447,6 +449,7 @@
447449
0EB7AD5F1D7E273A00278C48 /* 258_AddDigits.swift */,
448450
0EB7AD6D1D7E5CB500278C48 /* 263_UglyNumber.swift */,
449451
0EB7AD691D7E4C7D00278C48 /* 326_PowerOfThree.swift */,
452+
0E68967D1DD7A57A006F10D3 /* 338_CountingBits.swift */,
450453
);
451454
path = Math;
452455
sourceTree = "<group>";
@@ -620,6 +623,7 @@
620623
0E5D155B1D7FBB7C001EB24C /* 8_StringToInteger.swift in Sources */,
621624
0E7D77D81DCE815C006DD938 /* 49_GroupAnagrams.swift in Sources */,
622625
0EE265231DD416E400D2B0B1 /* 23_MergeKSortedLists.swift in Sources */,
626+
0E68967E1DD7A57A006F10D3 /* 338_CountingBits.swift in Sources */,
623627
0E6FADCB1D58172200C8D71D /* 113_PathSumII.swift in Sources */,
624628
0E6FADB11D58171900C8D71D /* 290_WordPattern.swift in Sources */,
625629
0E6FADCA1D58172200C8D71D /* 112_PathSum.swift in Sources */,

Sources/Math/338_CountingBits.swift

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
//
2+
// 338_CountingBits.swift
3+
// LeetcodeSwift
4+
//
5+
// Created by yansong li on 2016-11-12.
6+
// Copyright © 2016 YANSONG LI. All rights reserved.
7+
//
8+
9+
import Foundation
10+
11+
/**
12+
Title:338 Counting Bits
13+
URL: https://leetcode.com/problems/counting-bits/
14+
Space: O(N)
15+
Time: O(N)
16+
*/
17+
18+
class CountingBits_Solution {
19+
func countBits(_ num: Int) -> [Int] {
20+
guard num > 0 else {
21+
return [0]
22+
}
23+
var result = Array(repeating: 0, count: num + 1)
24+
var x = 1
25+
for i in 1...num {
26+
if i == x {
27+
x = x << 1
28+
result[i] = 1
29+
} else {
30+
result[i] = result[i - (x >> 1)] + 1
31+
}
32+
}
33+
return result
34+
}
35+
}

0 commit comments

Comments
 (0)