Skip to content

Commit 294e4ce

Browse files
Merge pull request youngyangyang04#1031 from zhangjiongwx/master
添加 0344.反转字符串、0541.反转字符串II、0015.三数之和、0018.四数之和 C#版本
2 parents 6010030 + e453737 commit 294e4ce

File tree

4 files changed

+149
-3
lines changed

4 files changed

+149
-3
lines changed

problems/0015.三数之和.md

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -545,5 +545,64 @@ int** threeSum(int* nums, int numsSize, int* returnSize, int** returnColumnSizes
545545
}
546546
```
547547
548+
C#:
549+
```csharp
550+
public class Solution
551+
{
552+
public IList<IList<int>> ThreeSum(int[] nums)
553+
{
554+
var result = new List<IList<int>>();
555+
556+
Array.Sort(nums);
557+
558+
for (int i = 0; i < nums.Length - 2; i++)
559+
{
560+
int n1 = nums[i];
561+
562+
if (n1 > 0)
563+
break;
564+
565+
if (i > 0 && n1 == nums[i - 1])
566+
continue;
567+
568+
int left = i + 1;
569+
int right = nums.Length - 1;
570+
571+
while (left < right)
572+
{
573+
int n2 = nums[left];
574+
int n3 = nums[right];
575+
int sum = n1 + n2 + n3;
576+
577+
if (sum > 0)
578+
{
579+
right--;
580+
}
581+
else if (sum < 0)
582+
{
583+
left++;
584+
}
585+
else
586+
{
587+
result.Add(new List<int> { n1, n2, n3 });
588+
589+
while (left < right && nums[left] == n2)
590+
{
591+
left++;
592+
}
593+
594+
while (left < right && nums[right] == n3)
595+
{
596+
right--;
597+
}
598+
}
599+
}
600+
}
601+
602+
return result;
603+
}
604+
}
605+
```
606+
548607
-----------------------
549608
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>

problems/0018.四数之和.md

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -445,5 +445,67 @@ func fourSum(_ nums: [Int], _ target: Int) -> [[Int]] {
445445
}
446446
```
447447

448+
C#:
449+
```csharp
450+
public class Solution
451+
{
452+
public IList<IList<int>> FourSum(int[] nums, int target)
453+
{
454+
var result = new List<IList<int>>();
455+
456+
Array.Sort(nums);
457+
458+
for (int i = 0; i < nums.Length - 3; i++)
459+
{
460+
int n1 = nums[i];
461+
if (i > 0 && n1 == nums[i - 1])
462+
continue;
463+
464+
for (int j = i + 1; j < nums.Length - 2; j++)
465+
{
466+
int n2 = nums[j];
467+
if (j > i + 1 && n2 == nums[j - 1])
468+
continue;
469+
470+
int left = j + 1;
471+
int right = nums.Length - 1;
472+
473+
while (left < right)
474+
{
475+
int n3 = nums[left];
476+
int n4 = nums[right];
477+
int sum = n1 + n2 + n3 + n4;
478+
479+
if (sum > target)
480+
{
481+
right--;
482+
}
483+
else if (sum < target)
484+
{
485+
left++;
486+
}
487+
else
488+
{
489+
result.Add(new List<int> { n1, n2, n3, n4 });
490+
491+
while (left < right && nums[left] == n3)
492+
{
493+
left++;
494+
}
495+
496+
while (left < right && nums[right] == n4)
497+
{
498+
right--;
499+
}
500+
}
501+
}
502+
}
503+
}
504+
505+
return result;
506+
}
507+
}
508+
```
509+
448510
-----------------------
449511
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>

problems/0344.反转字符串.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,19 @@ void reverseString(char* s, int sSize){
253253
}
254254
```
255255
256+
C#:
257+
```csharp
258+
public class Solution
259+
{
260+
public void ReverseString(char[] s)
261+
{
262+
for (int i = 0, j = s.Length - 1; i < j; i++, j--)
263+
{
264+
(s[i], s[j]) = (s[j], s[i]);
265+
}
266+
}
267+
}
268+
```
256269

257270
-----------------------
258271
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>

problems/0541.反转字符串II.md

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -294,9 +294,21 @@ func reverseStr(_ s: String, _ k: Int) -> String {
294294
}
295295
```
296296

297-
298-
299-
297+
C#:
298+
```csharp
299+
public class Solution
300+
{
301+
public string ReverseStr(string s, int k)
302+
{
303+
Span<char> span = s.ToCharArray().AsSpan();
304+
for (int i = 0; i < span.Length; i += 2 * k)
305+
{
306+
span[i + k < span.Length ? i..(i + k) : i..].Reverse();
307+
}
308+
return span.ToString();
309+
}
310+
}
311+
```
300312

301313
-----------------------
302314
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>

0 commit comments

Comments
 (0)