Merge pull request #2397 from eeee0717/master

Update0406.根据身高重建队列,添加C#
This commit is contained in:
程序员Carl
2024-01-11 09:59:18 +08:00
committed by GitHub
47 changed files with 213 additions and 50 deletions

View File

@ -618,7 +618,7 @@ char * longestPalindrome(char * s){
### C# ### C#
動態規則: 動態規則:
```c# ```csharp
public class Solution { public class Solution {
public string LongestPalindrome(string s) { public string LongestPalindrome(string s) {
@ -648,7 +648,7 @@ public class Solution {
``` ```
雙指針: 雙指針:
```C# ```csharp
public class Solution { public class Solution {
int maxlenth = 0; int maxlenth = 0;
int left = 0; int left = 0;

View File

@ -733,7 +733,7 @@ def backtracking(result, letter_map, digits, path, index)
end end
``` ```
### C# ### C#
```C# ```csharp
public class Solution public class Solution
{ {
public IList<string> res = new List<string>(); public IList<string> res = new List<string>();

View File

@ -462,7 +462,7 @@ impl Solution {
``` ```
### C# ### C#
```C# ```csharp
// 虚拟头结点 // 虚拟头结点
public ListNode SwapPairs(ListNode head) public ListNode SwapPairs(ListNode head)
{ {

View File

@ -1359,7 +1359,7 @@ impl Solution {
``` ```
>前缀表统一不减一 >前缀表统一不减一
```C# ```csharp
public int StrStr(string haystack, string needle) public int StrStr(string haystack, string needle)
{ {
if (string.IsNullOrEmpty(needle)) if (string.IsNullOrEmpty(needle))

View File

@ -331,7 +331,7 @@ class Solution {
### C# ### C#
```c# ```csharp
public int[] SearchRange(int[] nums, int target) { public int[] SearchRange(int[] nums, int target) {
var leftBorder = GetLeftBorder(nums, target); var leftBorder = GetLeftBorder(nums, target);

View File

@ -336,6 +336,32 @@ impl Solution {
} }
} }
``` ```
### C#
```csharp
public class Solution
{
public int[][] Merge(int[][] intervals)
{
if (intervals.Length == 0)
return intervals;
Array.Sort(intervals, (a, b) => a[0] - b[0]);
List<List<int>> res = new List<List<int>>();
res.Add(intervals[0].ToList());
for (int i = 1; i < intervals.Length; i++)
{
if (res[res.Count - 1][1] >= intervals[i][0])
{
res[res.Count - 1][1] = Math.Max(res[res.Count - 1][1], intervals[i][1]);
}
else
{
res.Add(intervals[i].ToList());
}
}
return res.Select(x => x.ToArray()).ToArray();
}
}
```
<p align="center"> <p align="center">
<a href="https://programmercarl.com/other/kstar.html" target="_blank"> <a href="https://programmercarl.com/other/kstar.html" target="_blank">

View File

@ -537,7 +537,7 @@ object Solution {
### c# ### c#
```c# ```csharp
public class Solution public class Solution
{ {
public int UniquePaths(int m, int n) public int UniquePaths(int m, int n)

View File

@ -468,7 +468,7 @@ object Solution {
### C# ### C#
```c# ```csharp
public class Solution { public class Solution {
public int ClimbStairs(int n) { public int ClimbStairs(int n) {
if(n<=2) return n; if(n<=2) return n;

View File

@ -793,7 +793,7 @@ end
``` ```
### C# ### C#
```C# ```csharp
// 暴力 // 暴力
public class Solution public class Solution
{ {

View File

@ -641,7 +641,7 @@ object Solution {
} }
``` ```
### C# ### C#
```c# ```csharp
public class Solution public class Solution
{ {
public IList<IList<int>> res = new List<IList<int>>(); public IList<IList<int>> res = new List<IList<int>>();

View File

@ -792,7 +792,7 @@ impl Solution {
} }
``` ```
### C# ### C#
```C# ```csharp
// 递归 // 递归
public long val = Int64.MinValue; public long val = Int64.MinValue;
public bool IsValidBST(TreeNode root) public bool IsValidBST(TreeNode root)

View File

@ -898,7 +898,7 @@ impl Solution {
} }
``` ```
### C# ### C#
```C# ```csharp
// 递归 // 递归
public bool IsSymmetric(TreeNode root) public bool IsSymmetric(TreeNode root)
{ {

View File

@ -463,7 +463,7 @@ impl Solution {
} }
``` ```
### C# ### C#
```C# ```csharp
public IList<IList<int>> LevelOrder(TreeNode root) public IList<IList<int>> LevelOrder(TreeNode root)
{ {
var res = new List<IList<int>>(); var res = new List<IList<int>>();
@ -825,7 +825,7 @@ impl Solution {
} }
``` ```
### C# ### C#
```C# ```csharp
public IList<IList<int>> LevelOrderBottom(TreeNode root) public IList<IList<int>> LevelOrderBottom(TreeNode root)
{ {
var res = new List<IList<int>>(); var res = new List<IList<int>>();

View File

@ -1033,7 +1033,7 @@ impl Solution {
} }
``` ```
### C# ### C#
```C# ```csharp
// 递归法 // 递归法
public int MaxDepth(TreeNode root) { public int MaxDepth(TreeNode root) {
if(root == null) return 0; if(root == null) return 0;
@ -1044,7 +1044,7 @@ public int MaxDepth(TreeNode root) {
return 1 + Math.Max(leftDepth, rightDepth); return 1 + Math.Max(leftDepth, rightDepth);
} }
``` ```
```C# ```csharp
// 前序遍历 // 前序遍历
int result = 0; int result = 0;
public int MaxDepth(TreeNode root) public int MaxDepth(TreeNode root)
@ -1065,7 +1065,7 @@ public void GetDepth(TreeNode root, int depth)
return; return;
} }
``` ```
```C# ```csharp
// 迭代法 // 迭代法
public int MaxDepth(TreeNode root) public int MaxDepth(TreeNode root)
{ {

View File

@ -1229,7 +1229,7 @@ impl Solution {
} }
``` ```
### C# ### C#
```C# ```csharp
public TreeNode BuildTree(int[] inorder, int[] postorder) public TreeNode BuildTree(int[] inorder, int[] postorder)
{ {
if (inorder.Length == 0 || postorder.Length == null) return null; if (inorder.Length == 0 || postorder.Length == null) return null;

View File

@ -909,7 +909,7 @@ impl Solution {
} }
``` ```
### C# ### C#
```C# ```csharp
public bool IsBalanced(TreeNode root) public bool IsBalanced(TreeNode root)
{ {
return GetHeight(root) == -1 ? false : true; return GetHeight(root) == -1 ? false : true;

View File

@ -709,7 +709,7 @@ impl Solution {
} }
``` ```
### C# ### C#
```C# ```csharp
// 递归 // 递归
public int MinDepth(TreeNode root) public int MinDepth(TreeNode root)
{ {
@ -725,7 +725,7 @@ public int MinDepth(TreeNode root)
return res; return res;
} }
``` ```
```C# ```csharp
// 迭代 // 迭代
public int MinDepth(TreeNode root) public int MinDepth(TreeNode root)
{ {

View File

@ -1513,7 +1513,7 @@ impl Solution {
``` ```
### C# ### C#
```C# ```csharp
// 0112.路径总和 // 0112.路径总和
// 递归 // 递归
public bool HasPathSum(TreeNode root, int targetSum) public bool HasPathSum(TreeNode root, int targetSum)

View File

@ -973,7 +973,7 @@ char * reverseWords(char * s){
``` ```
### C# ### C#
```C# LINQ高级方法 ```csharp LINQ高级方法
public string ReverseWords(string s) { public string ReverseWords(string s) {
return string.Join(' ', s.Trim().Split(' ',StringSplitOptions.RemoveEmptyEntries).Reverse()); return string.Join(' ', s.Trim().Split(' ',StringSplitOptions.RemoveEmptyEntries).Reverse());
} }

View File

@ -868,7 +868,7 @@ impl Solution {
} }
``` ```
### C# ### C#
```C# ```csharp
// 递归 // 递归
public int CountNodes(TreeNode root) public int CountNodes(TreeNode root)
{ {

View File

@ -521,7 +521,7 @@ impl Solution {
} }
``` ```
### C# ### C#
```C# ```csharp
// 递归 // 递归
public TreeNode LowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) public TreeNode LowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q)
{ {

View File

@ -432,7 +432,7 @@ impl Solution {
} }
``` ```
### C# ### C#
```C# ```csharp
public TreeNode LowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) public TreeNode LowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q)
{ {
if (root == null || root == p || root == q) return root; if (root == null || root == p || root == q) return root;

View File

@ -901,7 +901,7 @@ impl Solution {
} }
``` ```
### C# ### C#
```C# ```csharp
public IList<string> BinaryTreePaths(TreeNode root) public IList<string> BinaryTreePaths(TreeNode root)
{ {
List<int> path = new(); List<int> path = new();

View File

@ -652,7 +652,7 @@ impl Solution {
} }
``` ```
### C# ### C#
```C# ```csharp
// 递归 // 递归
public int SumOfLeftLeaves(TreeNode root) public int SumOfLeftLeaves(TreeNode root)
{ {

View File

@ -396,6 +396,29 @@ object Solution {
} }
} }
``` ```
### C#
```csharp
public class Solution
{
public int[][] ReconstructQueue(int[][] people)
{
Array.Sort(people, (a, b) =>
{
if (a[0] == b[0])
{
return a[1] - b[1];
}
return b[0] - a[0];
});
var res = new List<int[]>();
for (int i = 0; i < people.Length; i++)
{
res.Insert(people[i][1], people[i]);
}
return res.ToArray();
}
}
```
<p align="center"> <p align="center">

View File

@ -441,6 +441,27 @@ impl Solution {
} }
} }
``` ```
### C#
```csharp
public class Solution
{
public int EraseOverlapIntervals(int[][] intervals)
{
if (intervals.Length == 0) return 0;
Array.Sort(intervals, (a, b) => a[1].CompareTo(b[1]));
int res = 1, end = intervals[0][1];
for (int i = 1; i < intervals.Length; i++)
{
if (end <= intervals[i][0])
{
end = intervals[i][1];
res++;
}
}
return intervals.Length - res;
}
}
```
<p align="center"> <p align="center">

View File

@ -772,7 +772,7 @@ impl Solution {
### C# ### C#
> 递归法: > 递归法:
```C# ```csharp
public TreeNode DeleteNode(TreeNode root, int key) { public TreeNode DeleteNode(TreeNode root, int key) {
// 第一种情况:没找到删除的节点,遍历到空节点直接返回了 // 第一种情况:没找到删除的节点,遍历到空节点直接返回了
if (root == null) return null; if (root == null) return null;

View File

@ -332,6 +332,24 @@ object Solution {
} }
} }
``` ```
### C#
```csharp
public class Solution
{
public int FindMinArrowShots(int[][] points)
{
if (points.Length == 0) return 0;
Array.Sort(points, (a, b) => a[0].CompareTo(b[0]));
int count = 1;
for (int i = 1; i < points.Length; i++)
{
if (points[i][0] > points[i - 1][1]) count++;
else points[i][1] = Math.Min(points[i][1], points[i - 1][1]);
}
return count;
}
}
```
<p align="center"> <p align="center">
<a href="https://programmercarl.com/other/kstar.html" target="_blank"> <a href="https://programmercarl.com/other/kstar.html" target="_blank">

View File

@ -682,7 +682,7 @@ impl Solution {
} }
``` ```
### C# ### C#
```C# ```csharp
// 前缀表不减一 // 前缀表不减一
public bool RepeatedSubstringPattern(string s) public bool RepeatedSubstringPattern(string s)
{ {

View File

@ -1010,7 +1010,7 @@ pub fn find_mode(root: Option<Rc<RefCell<TreeNode>>>) -> Vec<i32> {
} }
``` ```
### C# ### C#
```C# ```csharp
// 递归 // 递归
public class Solution public class Solution
{ {

View File

@ -439,7 +439,7 @@ object Solution {
动态规划: 动态规划:
```c# ```csharp
public class Solution public class Solution
{ {
public int Fib(int n) public int Fib(int n)
@ -459,7 +459,7 @@ public class Solution
递归: 递归:
```c# ```csharp
public class Solution public class Solution
{ {
public int Fib(int n) public int Fib(int n)

View File

@ -685,7 +685,7 @@ impl Solution {
} }
``` ```
### C# ### C#
```C# ```csharp
//递归 //递归
int maxDepth = -1; int maxDepth = -1;
int res = 0; int res = 0;

View File

@ -648,7 +648,7 @@ impl Solution {
} }
``` ```
### C# ### C#
```C# ```csharp
// 递归 // 递归
public class Solution public class Solution
{ {

View File

@ -530,7 +530,7 @@ impl Solution {
} }
``` ```
### C# ### C#
```C# ```csharp
// 递归 // 递归
public class Solution public class Solution
{ {

View File

@ -789,7 +789,7 @@ impl Solution {
} }
``` ```
### C# ### C#
```C# ```csharp
public TreeNode MergeTrees(TreeNode root1, TreeNode root2) public TreeNode MergeTrees(TreeNode root1, TreeNode root2)
{ {
if (root1 == null) return root2; if (root1 == null) return root2;

View File

@ -583,7 +583,7 @@ impl Solution {
} }
``` ```
### C# ### C#
```C# ```csharp
public TreeNode ConstructMaximumBinaryTree(int[] nums) public TreeNode ConstructMaximumBinaryTree(int[] nums)
{ {
if (nums.Length == 0) return null; if (nums.Length == 0) return null;

View File

@ -568,7 +568,7 @@ impl Solution {
} }
``` ```
### C# ### C#
```C# ```csharp
// 递归 // 递归
public TreeNode TrimBST(TreeNode root, int low, int high) public TreeNode TrimBST(TreeNode root, int low, int high)
{ {

View File

@ -465,7 +465,7 @@ impl Solution {
} }
``` ```
### C# ### C#
```C# ```csharp
// 递归 // 递归
public TreeNode SearchBST(TreeNode root, int val) public TreeNode SearchBST(TreeNode root, int val)
{ {

View File

@ -1486,7 +1486,7 @@ impl MyLinkedList {
``` ```
### C# ### C#
```C# ```csharp
class ListNode class ListNode
{ {
public int val; public int val;

View File

@ -392,6 +392,30 @@ impl Solution {
} }
} }
``` ```
### C#
```csharp
public class Solution
{
public int MonotoneIncreasingDigits(int n)
{
char[] s = n.ToString().ToCharArray();
int flag = s.Length;
for (int i = s.Length - 1; i > 0; i--)
{
if (s[i - 1] > s[i])
{
flag = i;
s[i - 1]--;
}
}
for (int i = flag; i < s.Length; i++)
{
s[i] = '9';
}
return int.Parse(new string(s));
}
}
```
<p align="center"> <p align="center">
<a href="https://programmercarl.com/other/kstar.html" target="_blank"> <a href="https://programmercarl.com/other/kstar.html" target="_blank">

View File

@ -500,7 +500,7 @@ object Solution {
### C# ### C#
```c# ```csharp
public class Solution public class Solution
{ {
public int MinCostClimbingStairs(int[] cost) public int MinCostClimbingStairs(int[] cost)

View File

@ -404,6 +404,32 @@ impl Solution {
} }
} }
``` ```
### C#
```csharp
public class Solution
{
public IList<int> PartitionLabels(string s)
{
int[] location = new int[27];
for (int i = 0; i < s.Length; i++)
{
location[s[i] - 'a'] = i;
}
List<int> res = new List<int>();
int left = 0, right = 0;
for (int i = 0; i < s.Length; i++)
{
right = Math.Max(right, location[s[i] - 'a']);
if (i == right)
{
res.Add(right - left + 1);
left = i + 1;
}
}
return res;
}
}
```
<p align="center"> <p align="center">
<a href="https://programmercarl.com/other/kstar.html" target="_blank"> <a href="https://programmercarl.com/other/kstar.html" target="_blank">

View File

@ -726,6 +726,31 @@ impl Solution {
} }
} }
```
### C#
```csharp
public class Solution
{
public int res = 0;
public int MinCameraCover(TreeNode root)
{
if (Traversal(root) == 0) res++;
return res;
}
public int Traversal(TreeNode cur)
{
if (cur == null) return 2;
int left = Traversal(cur.left);
int right = Traversal(cur.right);
if (left == 2 && right == 2) return 0;
else if (left == 0 || right == 0)
{
res++;
return 1;
}
else return 2;
}
}
``` ```
<p align="center"> <p align="center">

View File

@ -742,7 +742,7 @@ impl Solution{
} }
``` ```
### C# ### C#
```C# ```csharp
// 前序遍历 // 前序遍历
public IList<int> PreorderTraversal(TreeNode root) public IList<int> PreorderTraversal(TreeNode root)
{ {
@ -772,7 +772,7 @@ public IList<int> PreorderTraversal(TreeNode root)
return res; return res;
} }
``` ```
```C# ```csharp
// 中序遍历 // 中序遍历
public IList<int> InorderTraversal(TreeNode root) public IList<int> InorderTraversal(TreeNode root)
{ {
@ -803,7 +803,7 @@ public IList<int> InorderTraversal(TreeNode root)
} }
``` ```
```C# ```csharp
// 后序遍历 // 后序遍历
public IList<int> PostorderTraversal(TreeNode root) public IList<int> PostorderTraversal(TreeNode root)
{ {

View File

@ -696,7 +696,7 @@ impl Solution {
} }
``` ```
### C# ### C#
```C# ```csharp
// 前序遍历 // 前序遍历
public IList<int> PreorderTraversal(TreeNode root) public IList<int> PreorderTraversal(TreeNode root)
{ {

View File

@ -566,7 +566,7 @@ impl Solution {
``` ```
### C# ### C#
```C# ```csharp
// 前序遍历 // 前序遍历
public IList<int> PreorderTraversal(TreeNode root) public IList<int> PreorderTraversal(TreeNode root)
{ {
@ -584,7 +584,7 @@ public void Traversal(TreeNode cur, IList<int> res)
Traversal(cur.right, res); Traversal(cur.right, res);
} }
``` ```
```C# ```csharp
// 中序遍历 // 中序遍历
public IList<int> InorderTraversal(TreeNode root) public IList<int> InorderTraversal(TreeNode root)
{ {
@ -601,7 +601,7 @@ public void Traversal(TreeNode cur, IList<int> res)
Traversal(cur.right, res); Traversal(cur.right, res);
} }
``` ```
```C# ```csharp
// 后序遍历 // 后序遍历
public IList<int> PostorderTraversal(TreeNode root) public IList<int> PostorderTraversal(TreeNode root)
{ {

View File

@ -503,7 +503,7 @@ object Solution {
} }
``` ```
### C# ### C#
```C# ```csharp
public ListNode GetIntersectionNode(ListNode headA, ListNode headB) public ListNode GetIntersectionNode(ListNode headA, ListNode headB)
{ {
if (headA == null || headB == null) return null; if (headA == null || headB == null) return null;