做58同城这样的网站,深圳电商代运营公司排名,郑州新闻头条最新消息,wordpress怎么恢复到原来版本★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号#xff1a;山青咏芝#xff08;shanqingyongzhi#xff09;➤博客园地址#xff1a;山青咏芝#xff08;https://www.cnblogs.com/strengthen/#xff09;➤GitHub地址山青咏芝shanqingyongzhi➤博客园地址山青咏芝https://www.cnblogs.com/strengthen/➤GitHub地址https://github.com/strengthen/LeetCode➤原文地址 https://www.cnblogs.com/strengthen/p/10587854.html ➤如果链接不是山青咏芝的博客园地址则可能是爬取作者的文章。➤原文已修改更新强烈建议点击原文地址阅读支持作者支持原创★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ Given an array A of integers, return true if and only if we can partition the array into three non-emptyparts with equal sums. Formally, we can partition the array if we can find indexes i1 j with (A[0] A[1] ... A[i] A[i1] A[i2] ... A[j-1] A[j] A[j-1] ... A[A.length - 1]) Example 1: Input: [0,2,1,-6,6,-7,9,1,2,0,1]
Output: true
Explanation: 0 2 1 -6 6 - 7 9 1 2 0 1Example 2: Input: [0,2,1,-6,6,7,9,-1,2,0,1]
Output: falseExample 3: Input: [3,3,6,5,-2,2,5,1,-9,4]
Output: true
Explanation: 3 3 6 5 - 2 2 5 1 - 9 4 Note: 3 A.length 50000-10000 A[i] 10000给定一个整数数组 A只有我们可以将其划分为三个和相等的非空部分时才返回 true否则返回 false。 形式上如果我们可以找出索引 i1 j 且满足 (A[0] A[1] ... A[i] A[i1] A[i2] ... A[j-1] A[j] A[j-1] ... A[A.length - 1]) 就可以将数组三等分。 示例 1 输出[0,2,1,-6,6,-7,9,1,2,0,1]
输出true
解释0 2 1 -6 6 - 7 9 1 2 0 1示例 2 输入[0,2,1,-6,6,7,9,-1,2,0,1]
输出false示例 3 输入[3,3,6,5,-2,2,5,1,-9,4]
输出true
解释3 3 6 5 - 2 2 5 1 - 9 4 提示 3 A.length 50000-10000 A[i] 10000 Runtime: 364 ms Memory Usage: 19.5 MB 1 class Solution {2 func canThreePartsEqualSum(_ A: [Int]) - Bool {3 var sum:Int 04 var n:Int A.count5 for i in 0..n {sum A[i]}6 if sum % 3 ! 0 {return false}7 sum / 38 var cnt:Int 09 var ok:Int 0
10 for i in 0..n
11 {
12 cnt A[i]
13 if sum cnt ok ! 2
14 {
15 cnt 0
16 ok 1
17 }
18 }
19 return ok 2 sum cnt
20 }
21 } 364ms 1 class Solution {2 func canThreePartsEqualSum(_ A: [Int]) - Bool {3 var total 04 for i in 0..A.count {5 total total A[i]6 }7 8 let target total / 39 if total % 3 ! 0 {
10 return false
11 }
12
13 var sum 0
14 var count 0
15 for i in 0..A.count {
16 sum sum A[i]
17 if sum target {
18 count count 1
19 sum 0
20 continue
21 }
22 }
23
24 if count 3 sum 0 {
25 return true
26 }
27
28 return false
29 }
30 } 372ms 1 class Solution {2 func canThreePartsEqualSum(_ A: [Int]) - Bool {3 let count A.count4 var sum 05 for item in A {6 sum sum item7 }8 guard sum % 3 0 else { return false }9 let part Int(sum / 3)
10 print(part)
11 var i -1
12 var j count
13 var part1 0
14 var part2 0
15 while i1j {
16 i i 1
17 j j - 1
18 var checkPart1 true
19 if checkPart1 {
20 checkPart1 false
21 while part1 ! part i j1 {
22 part1 part1 A[i]
23 i i 1
24 }
25 i i - 1
26 if i1 j {
27 return false
28 }
29 }
30
31 var checkPart2 true
32 if checkPart2 {
33 checkPart2 false
34 while part2 ! part i j1 {
35 part2 part2 A[j]
36 j j - 1
37 }
38 j j 1
39 if i1 j {
40 return false
41 }
42 }
43
44 if part1 part2, part1 part, i j {
45 return true
46 }
47 }
48 return false
49 }
50 } 376ms 1 class Solution {2 func canThreePartsEqualSum(_ A: [Int]) - Bool {3 let aSum A.reduce(0, )4 if aSum % 3 ! 0 {5 return false6 }7 let expectedSectionSum aSum / 38 var expectedSectionSumSeenCount 09 var currentSectionSum 0
10 for i in 0..A.count {
11 let value A[i]
12 if value 0 {
13 continue
14 }
15 currentSectionSum value
16 if currentSectionSum expectedSectionSum {
17 expectedSectionSumSeenCount 1
18 currentSectionSum 0
19 }
20 }
21 return expectedSectionSumSeenCount 3
22 }
23 } 380ms 1 class Solution {2 func canThreePartsEqualSum(_ A: [Int]) - Bool {3 let sum A.reduce(0, )4 guard sum % 3 0 else { return false }5 let target sum / 36 var split [Int](), currSum 07 for i in 0..A.count {8 currSum A[i]9 if currSum target {
10 split.append(i)
11 currSum 0
12 }
13 }
14 return split.count 2 0 split[0] split[0] split[1] split[1] A.count
15 }
16 } 400ms 1 class Solution {2 func canThreePartsEqualSum(_ A: [Int]) - Bool {3 guard A.count 3 else {4 return false5 }6 7 let sum A.reduce(0) { $0 $1 }8 guard sum % 3 0 else {9 return false
10 }
11 let partition sum / 3
12 var count 0
13 var current 0
14 for a in A {
15 current a
16 if current partition {
17 count 1
18 current 0
19 }
20 }
21 return count ! 0 count % 3 0
22 }
23 } 408ms 1 class Solution { 2 func canThreePartsEqualSum(_ A: [Int]) - Bool {3 var firstSum 04 let total A.reduce(0, )5 for (index, element) in A.enumerated() {6 firstSum element7 let twoSums total - firstSum8 if twoSums % 2 0 {9 if twoSums / 2 firstSum A.count - index 2 {
10 let subarray: [Int] Array(A[index..A.count])
11 return validateSecondPart(subarray, withSum: firstSum)
12 }
13 }
14 }
15 return false
16 }
17
18 func validateSecondPart(_ a: [Int], withSum sum: Int) - Bool {
19 var leftover a.reduce(0, )
20 for (index, element) in a.enumerated() {
21 leftover - element
22 if leftover sum a.count - index 1 {
23 return true
24 }
25 }
26 return false
27 }
28 } 420ms 1 class Solution {2 func canThreePartsEqualSum(_ A: [Int]) - Bool {3 guard A.count 3 else { return false }4 5 var prefixSums Array(repeating: 0, count: A.count 1)6 7 for (i, num) in A.enumerated() {8 prefixSums[i 1] prefixSums[i] num9 }
10
11 let sum prefixSums.last!
12
13 guard sum % 3 0 else { return false }
14
15 let partitionSum sum / 3
16
17 var a: Int?
18 var b: Int?
19
20 for (i, num) in prefixSums.enumerated() {
21 if num partitionSum a nil {
22 a i
23 } else if num (partitionSum * 2) b nil a ! nil {
24 b i
25 return true
26 }
27 }
28
29 return false
30 }
31 } 440ms 1 class Solution {2 func canThreePartsEqualSum(_ A: [Int]) - Bool {3 if A.count 3 {4 return false5 }6 if A.count 3 {7 return (A[0] A[1]) (A[0] A[2]) (A[1] A[2])8 }9 // start for the match.
10 var first false
11 var second false
12 var third false
13 var firstSum 0
14 var secondSum 0
15 var thirdSum 0
16 let totalSum A.reduce(0,)
17 if (totalSum % 3) ! 0 {
18 return false
19 }
20 for number in A {
21 firstSum number
22 if !first (firstSum (totalSum / 3)) {
23 print(First met)
24 first true
25 continue
26 }
27 if first !second{
28 secondSum number
29 if secondSum (totalSum / 3) {
30 print(Second met)
31 second true
32 continue
33 }
34 }
35 if second {
36 thirdSum number
37 if thirdSum (totalSum / 3) {
38 print(Third met)
39 }
40 }
41 }
42 if thirdSum (totalSum / 3) {
43 return true
44 }
45 return false
46 }
47 } 452ms 1 class Solution {2 func canThreePartsEqualSum(_ A: [Int]) - Bool {3 var prefix: [Int] [0]4 prefix.reserveCapacity(A.count 1)5 for a in A {6 prefix.append(prefix.last! a)7 }8 9 var first: Int?
10 var second: Int?
11
12 guard prefix.last! % 3 0 else {
13 return false
14 }
15
16 let oneThird prefix.last! / 3
17 for (i, p) in prefix.enumerated() {
18 if p oneThird {
19 first i
20 break
21 }
22 }
23
24 let twoThird oneThird * 2
25 for (i, p) in prefix.enumerated().reversed() {
26 if p twoThird {
27 second i
28 break
29 }
30 }
31
32 if let first first,
33 let second second {
34 return first second
35 }
36
37 return false
38 }
39 } 转载于:https://www.cnblogs.com/strengthen/p/10587854.html