Skip to content

Commit 7286b45

Browse files
cedricwucedricwu
authored andcommitted
update
1 parent 83603f3 commit 7286b45

File tree

14 files changed

+436
-22
lines changed

14 files changed

+436
-22
lines changed
File renamed without changes.
File renamed without changes.
File renamed without changes.

15. 三数之和/MyPlayground.playground/Contents.swift

Lines changed: 0 additions & 18 deletions
This file was deleted.

15. 三数之和/MyPlayground.playground/contents.xcplayground

Lines changed: 0 additions & 4 deletions
This file was deleted.

15. 三数之和/rust/main/Cargo.lock

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

15. 三数之和/rust/main/Cargo.toml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
[package]
2+
name = "main"
3+
version = "0.1.0"
4+
edition = "2024"
5+
6+
[dependencies]
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
struct Solution {
2+
3+
}
4+
5+
use std::cmp::Ordering;
6+
7+
impl Solution {
8+
pub fn three_sum(nums: Vec<i32>) -> Vec<Vec<i32>> {
9+
let mut result = Vec::new();
10+
let mut nums = nums;
11+
nums.sort(); // 先对数组进行排序
12+
let n = nums.len();
13+
14+
for i in 0..n {
15+
// 跳过重复的元素以避免重复的三元组
16+
if i > 0 && nums[i] == nums[i-1] {
17+
continue;
18+
}
19+
20+
let target = -nums[i];
21+
let mut left = i + 1;
22+
let mut right = n - 1;
23+
24+
while left < right {
25+
let sum = nums[left] + nums[right];
26+
27+
match sum.cmp(&target) {
28+
Ordering::Less => left += 1,
29+
Ordering::Greater => right -= 1,
30+
Ordering::Equal => {
31+
result.push(vec![nums[i], nums[left], nums[right]]);
32+
33+
// 跳过重复元素以避免重复的三元组
34+
while left < right && nums[left] == nums[left + 1] {
35+
left += 1;
36+
}
37+
while left < right && nums[right] == nums[right - 1] {
38+
right -= 1;
39+
}
40+
41+
// 移动到下一个不同的元素
42+
left += 1;
43+
right -= 1;
44+
}
45+
}
46+
}
47+
}
48+
49+
result
50+
}
51+
}
52+
53+
// 示例测试用例
54+
fn main() {
55+
let nums = vec![-1, 0, 1, 2, -1, -4];
56+
let result = Solution::three_sum(nums);
57+
println!("{:?}", result); // 输出: [[-1, -1, 2], [-1, 0, 1]]
58+
}
Lines changed: 290 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,290 @@
1+
// !$*UTF8*$!
2+
{
3+
archiveVersion = 1;
4+
classes = {
5+
};
6+
objectVersion = 77;
7+
objects = {
8+
9+
/* Begin PBXCopyFilesBuildPhase section */
10+
A78C72722DE4AAD90013BCE4 /* CopyFiles */ = {
11+
isa = PBXCopyFilesBuildPhase;
12+
buildActionMask = 2147483647;
13+
dstPath = /usr/share/man/man1/;
14+
dstSubfolderSpec = 0;
15+
files = (
16+
);
17+
runOnlyForDeploymentPostprocessing = 1;
18+
};
19+
/* End PBXCopyFilesBuildPhase section */
20+
21+
/* Begin PBXFileReference section */
22+
A78C72742DE4AAD90013BCE4 /* main */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = main; sourceTree = BUILT_PRODUCTS_DIR; };
23+
/* End PBXFileReference section */
24+
25+
/* Begin PBXFileSystemSynchronizedRootGroup section */
26+
A78C72762DE4AAD90013BCE4 /* main */ = {
27+
isa = PBXFileSystemSynchronizedRootGroup;
28+
path = main;
29+
sourceTree = "<group>";
30+
};
31+
/* End PBXFileSystemSynchronizedRootGroup section */
32+
33+
/* Begin PBXFrameworksBuildPhase section */
34+
A78C72712DE4AAD90013BCE4 /* Frameworks */ = {
35+
isa = PBXFrameworksBuildPhase;
36+
buildActionMask = 2147483647;
37+
files = (
38+
);
39+
runOnlyForDeploymentPostprocessing = 0;
40+
};
41+
/* End PBXFrameworksBuildPhase section */
42+
43+
/* Begin PBXGroup section */
44+
A78C726B2DE4AAD90013BCE4 = {
45+
isa = PBXGroup;
46+
children = (
47+
A78C72762DE4AAD90013BCE4 /* main */,
48+
A78C72752DE4AAD90013BCE4 /* Products */,
49+
);
50+
sourceTree = "<group>";
51+
};
52+
A78C72752DE4AAD90013BCE4 /* Products */ = {
53+
isa = PBXGroup;
54+
children = (
55+
A78C72742DE4AAD90013BCE4 /* main */,
56+
);
57+
name = Products;
58+
sourceTree = "<group>";
59+
};
60+
/* End PBXGroup section */
61+
62+
/* Begin PBXNativeTarget section */
63+
A78C72732DE4AAD90013BCE4 /* main */ = {
64+
isa = PBXNativeTarget;
65+
buildConfigurationList = A78C727B2DE4AAD90013BCE4 /* Build configuration list for PBXNativeTarget "main" */;
66+
buildPhases = (
67+
A78C72702DE4AAD90013BCE4 /* Sources */,
68+
A78C72712DE4AAD90013BCE4 /* Frameworks */,
69+
A78C72722DE4AAD90013BCE4 /* CopyFiles */,
70+
);
71+
buildRules = (
72+
);
73+
dependencies = (
74+
);
75+
fileSystemSynchronizedGroups = (
76+
A78C72762DE4AAD90013BCE4 /* main */,
77+
);
78+
name = main;
79+
packageProductDependencies = (
80+
);
81+
productName = main;
82+
productReference = A78C72742DE4AAD90013BCE4 /* main */;
83+
productType = "com.apple.product-type.tool";
84+
};
85+
/* End PBXNativeTarget section */
86+
87+
/* Begin PBXProject section */
88+
A78C726C2DE4AAD90013BCE4 /* Project object */ = {
89+
isa = PBXProject;
90+
attributes = {
91+
BuildIndependentTargetsInParallel = 1;
92+
LastSwiftUpdateCheck = 1610;
93+
LastUpgradeCheck = 1610;
94+
TargetAttributes = {
95+
A78C72732DE4AAD90013BCE4 = {
96+
CreatedOnToolsVersion = 16.1;
97+
};
98+
};
99+
};
100+
buildConfigurationList = A78C726F2DE4AAD90013BCE4 /* Build configuration list for PBXProject "main" */;
101+
developmentRegion = en;
102+
hasScannedForEncodings = 0;
103+
knownRegions = (
104+
en,
105+
Base,
106+
);
107+
mainGroup = A78C726B2DE4AAD90013BCE4;
108+
minimizedProjectReferenceProxies = 1;
109+
preferredProjectObjectVersion = 77;
110+
productRefGroup = A78C72752DE4AAD90013BCE4 /* Products */;
111+
projectDirPath = "";
112+
projectRoot = "";
113+
targets = (
114+
A78C72732DE4AAD90013BCE4 /* main */,
115+
);
116+
};
117+
/* End PBXProject section */
118+
119+
/* Begin PBXSourcesBuildPhase section */
120+
A78C72702DE4AAD90013BCE4 /* Sources */ = {
121+
isa = PBXSourcesBuildPhase;
122+
buildActionMask = 2147483647;
123+
files = (
124+
);
125+
runOnlyForDeploymentPostprocessing = 0;
126+
};
127+
/* End PBXSourcesBuildPhase section */
128+
129+
/* Begin XCBuildConfiguration section */
130+
A78C72792DE4AAD90013BCE4 /* Debug */ = {
131+
isa = XCBuildConfiguration;
132+
buildSettings = {
133+
ALWAYS_SEARCH_USER_PATHS = NO;
134+
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
135+
CLANG_ANALYZER_NONNULL = YES;
136+
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
137+
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
138+
CLANG_ENABLE_MODULES = YES;
139+
CLANG_ENABLE_OBJC_ARC = YES;
140+
CLANG_ENABLE_OBJC_WEAK = YES;
141+
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
142+
CLANG_WARN_BOOL_CONVERSION = YES;
143+
CLANG_WARN_COMMA = YES;
144+
CLANG_WARN_CONSTANT_CONVERSION = YES;
145+
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
146+
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
147+
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
148+
CLANG_WARN_EMPTY_BODY = YES;
149+
CLANG_WARN_ENUM_CONVERSION = YES;
150+
CLANG_WARN_INFINITE_RECURSION = YES;
151+
CLANG_WARN_INT_CONVERSION = YES;
152+
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
153+
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
154+
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
155+
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
156+
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
157+
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
158+
CLANG_WARN_STRICT_PROTOTYPES = YES;
159+
CLANG_WARN_SUSPICIOUS_MOVE = YES;
160+
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
161+
CLANG_WARN_UNREACHABLE_CODE = YES;
162+
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
163+
COPY_PHASE_STRIP = NO;
164+
DEBUG_INFORMATION_FORMAT = dwarf;
165+
ENABLE_STRICT_OBJC_MSGSEND = YES;
166+
ENABLE_TESTABILITY = YES;
167+
ENABLE_USER_SCRIPT_SANDBOXING = YES;
168+
GCC_C_LANGUAGE_STANDARD = gnu17;
169+
GCC_DYNAMIC_NO_PIC = NO;
170+
GCC_NO_COMMON_BLOCKS = YES;
171+
GCC_OPTIMIZATION_LEVEL = 0;
172+
GCC_PREPROCESSOR_DEFINITIONS = (
173+
"DEBUG=1",
174+
"$(inherited)",
175+
);
176+
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
177+
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
178+
GCC_WARN_UNDECLARED_SELECTOR = YES;
179+
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
180+
GCC_WARN_UNUSED_FUNCTION = YES;
181+
GCC_WARN_UNUSED_VARIABLE = YES;
182+
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
183+
MACOSX_DEPLOYMENT_TARGET = 15.1;
184+
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
185+
MTL_FAST_MATH = YES;
186+
ONLY_ACTIVE_ARCH = YES;
187+
SDKROOT = macosx;
188+
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)";
189+
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
190+
};
191+
name = Debug;
192+
};
193+
A78C727A2DE4AAD90013BCE4 /* Release */ = {
194+
isa = XCBuildConfiguration;
195+
buildSettings = {
196+
ALWAYS_SEARCH_USER_PATHS = NO;
197+
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
198+
CLANG_ANALYZER_NONNULL = YES;
199+
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
200+
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
201+
CLANG_ENABLE_MODULES = YES;
202+
CLANG_ENABLE_OBJC_ARC = YES;
203+
CLANG_ENABLE_OBJC_WEAK = YES;
204+
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
205+
CLANG_WARN_BOOL_CONVERSION = YES;
206+
CLANG_WARN_COMMA = YES;
207+
CLANG_WARN_CONSTANT_CONVERSION = YES;
208+
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
209+
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
210+
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
211+
CLANG_WARN_EMPTY_BODY = YES;
212+
CLANG_WARN_ENUM_CONVERSION = YES;
213+
CLANG_WARN_INFINITE_RECURSION = YES;
214+
CLANG_WARN_INT_CONVERSION = YES;
215+
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
216+
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
217+
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
218+
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
219+
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
220+
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
221+
CLANG_WARN_STRICT_PROTOTYPES = YES;
222+
CLANG_WARN_SUSPICIOUS_MOVE = YES;
223+
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
224+
CLANG_WARN_UNREACHABLE_CODE = YES;
225+
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
226+
COPY_PHASE_STRIP = NO;
227+
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
228+
ENABLE_NS_ASSERTIONS = NO;
229+
ENABLE_STRICT_OBJC_MSGSEND = YES;
230+
ENABLE_USER_SCRIPT_SANDBOXING = YES;
231+
GCC_C_LANGUAGE_STANDARD = gnu17;
232+
GCC_NO_COMMON_BLOCKS = YES;
233+
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
234+
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
235+
GCC_WARN_UNDECLARED_SELECTOR = YES;
236+
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
237+
GCC_WARN_UNUSED_FUNCTION = YES;
238+
GCC_WARN_UNUSED_VARIABLE = YES;
239+
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
240+
MACOSX_DEPLOYMENT_TARGET = 15.1;
241+
MTL_ENABLE_DEBUG_INFO = NO;
242+
MTL_FAST_MATH = YES;
243+
SDKROOT = macosx;
244+
SWIFT_COMPILATION_MODE = wholemodule;
245+
};
246+
name = Release;
247+
};
248+
A78C727C2DE4AAD90013BCE4 /* Debug */ = {
249+
isa = XCBuildConfiguration;
250+
buildSettings = {
251+
CODE_SIGN_STYLE = Automatic;
252+
PRODUCT_NAME = "$(TARGET_NAME)";
253+
SWIFT_VERSION = 5.0;
254+
};
255+
name = Debug;
256+
};
257+
A78C727D2DE4AAD90013BCE4 /* Release */ = {
258+
isa = XCBuildConfiguration;
259+
buildSettings = {
260+
CODE_SIGN_STYLE = Automatic;
261+
PRODUCT_NAME = "$(TARGET_NAME)";
262+
SWIFT_VERSION = 5.0;
263+
};
264+
name = Release;
265+
};
266+
/* End XCBuildConfiguration section */
267+
268+
/* Begin XCConfigurationList section */
269+
A78C726F2DE4AAD90013BCE4 /* Build configuration list for PBXProject "main" */ = {
270+
isa = XCConfigurationList;
271+
buildConfigurations = (
272+
A78C72792DE4AAD90013BCE4 /* Debug */,
273+
A78C727A2DE4AAD90013BCE4 /* Release */,
274+
);
275+
defaultConfigurationIsVisible = 0;
276+
defaultConfigurationName = Release;
277+
};
278+
A78C727B2DE4AAD90013BCE4 /* Build configuration list for PBXNativeTarget "main" */ = {
279+
isa = XCConfigurationList;
280+
buildConfigurations = (
281+
A78C727C2DE4AAD90013BCE4 /* Debug */,
282+
A78C727D2DE4AAD90013BCE4 /* Release */,
283+
);
284+
defaultConfigurationIsVisible = 0;
285+
defaultConfigurationName = Release;
286+
};
287+
/* End XCConfigurationList section */
288+
};
289+
rootObject = A78C726C2DE4AAD90013BCE4 /* Project object */;
290+
}

15. 三数之和/swift/main/main.xcodeproj/project.xcworkspace/contents.xcworkspacedata

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)