请给出3个算法题目,并用c#作答
时间: 2024-03-22 14:41:06 浏览: 15
好的,以下是三道算法题目,希望能对您有所帮助。
1. 题目:两数之和 II - 输入有序数组
题目描述:给定一个已按照 升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。
示例:
```
输入: numbers = [2, 7, 11, 15], target = 9
输出: [1, 2]
解释: 2 与 7 之和等于目标数 9,因此下标分别为 1 和 2。
```
C# 代码实现:
```csharp
public int[] TwoSum(int[] numbers, int target) {
int left = 0, right = numbers.Length - 1;
while(left < right) {
int sum = numbers[left] + numbers[right];
if(sum == target) {
return new int[]{ left + 1, right + 1 };
} else if(sum < target) {
left++;
} else {
right--;
}
}
return new int[0];
}
```
2. 题目:二叉树的最大深度
题目描述:给定一个二叉树,找出其最大深度。
示例:
```
输入: [3,9,20,null,null,15,7]
3
/ \
9 20
/ \
15 7
输出: 3
```
C# 代码实现:
```csharp
public int MaxDepth(TreeNode root) {
if(root == null) {
return 0;
}
int leftDepth = MaxDepth(root.left);
int rightDepth = MaxDepth(root.right);
return Math.Max(leftDepth, rightDepth) + 1;
}
```
3. 题目:最长公共前缀
题目描述:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。
示例:
```
输入: ["flower","flow","flight"]
输出: "fl"
```
C# 代码实现:
```csharp
public string LongestCommonPrefix(string[] strs) {
if(strs == null || strs.Length == 0) {
return "";
}
string prefix = strs[0];
for(int i = 1; i < strs.Length; i++) {
while(strs[i].IndexOf(prefix) != 0) {
prefix = prefix.Substring(0, prefix.Length - 1);
if(prefix.Length == 0) {
return "";
}
}
}
return prefix;
}
```