Leetcode 1:两数之和
public class Solution {
public int[] TwoSum(int[] nums, int target) {
for(int i=0;i<nums.Length;i++)
{
for(int j=i+1;j<nums.Length;j++)
{
if(nums[i]+nums[j]==target)
{
return new int[] {i,j};
}
}
}
return new int[] {0,0};
}
}
Leetcode 26:删除排序数组中的重复项
public class Solution {
public int RemoveDuplicates(int[] nums) {
if(nums.Length==0)
return 0;
int i=0;
for(int j=1;j<nums.Length;j++)
{
if(nums[j]!=nums[i])
{
i++;
nums[i]=nums[j];
}
}
return i+1;
}
}
Leetcode 27:移除元素
public class Solution {
public int RemoveElement(int[] nums, int val) {
int i=0;
for(int j=0;j<nums.Length;j++)
{
if(nums[j]!=val)
{
nums[i]=nums[j];
i++;
}
}
return i;
}
}
Leetcode 53:最大子序和
public class Solution {
public int MaxSubArray(int[] nums) {
if(nums.Length==0)
return 0;
if(nums.Length==1)
return nums[0];
int max=int.MinValue;
int sum=0;
for(int i=0;i<nums.Length;i++)
{
sum=Math.Max(sum,0);
sum+=nums[i];
max=Math.Max(sum,max);
}
return max;
}
}
Leetcode 11:盛水最多的容器
public class Solution {
public int MaxArea(int[] height) {
int i=0;
int j=height.Length-1;
int max=int.MinValue;
do
{
int s=(j-i)*Math.Min(height[i],height[j]);
if(s>max)
{
max=s;
}
if(height[i]<height[j])
{
i++;
}
else
{
j--;
}
}while(i<j);
return max;
}
}
Leetcode 33:搜索旋转排序数组
public class Solution {
public int Search(int[] nums, int target)
{
int i = 0;
int j = nums.Length - 1;
while (i<=j)
{
int mid = Convert.ToInt32((i+j)/2);
if (nums[i] == target)
{
return i;
}
else if (nums[j] == target)
{
return j;
}
else if (nums[mid] == target)
{
return mid;
}
i++;
j--;
}
return -1;
}
}
Leetcode 215:数组中的第k个最大元素
public class Solution {
public int FindKthLargest(int[] nums, int k) {
nums=nums.OrderBy(a=>a).ToArray();
return nums[nums.Length-k];
}
}
Leetcode 238:除自身以外数组的乘积
public class Solution {
public int[] ProductExceptSelf(int[] nums) {
int[] output1=new int[nums.Length];
int[] output2=new int[nums.Length];
output1[0]=1;
output2[nums.Length-1]=1;
for(int i=1;i<nums.Length;i++)
{
output1[i]=output1[i-1]*nums[i-1];
output2[nums.Length-i-1]=output2[nums.Length-i]*nums[nums.Length-i];
}
for(int i=0;i<nums.Length;i++)
{
output1[i]*=output2[i];
}
return output1;
}
}
Leetcode 4:寻找两个有序数组的中位数
public class Solution {
public double FindMedianSortedArrays(int[] nums1, int[] nums2) {
int i = nums1.Length;
int j = nums2.Length;
int len = i+j;
var resultIndex = len/2;
List<int> list = new List<int>(nums1);
list.AddRange(nums2);
list.Sort();
if (len%2==0)
{
return (list[resultIndex - 1] + list[resultIndex])/2.0;
}
else
{
return list[resultIndex];
}
}
}
Leetcode 41:缺失的第一个正数
public class Solution {
public int FirstMissingPositive(int[] nums) {
for(int i=0;i<nums.Length;i++)
{
while(nums[i]!=i+1&&nums[i]<=nums.Length&&nums[i]>0&&nums[i]!=nums[nums[i]-1])
{
int t=nums[i];
nums[i]=nums[t-1];
nums[t-1]=t;
}
}
for(int i=0;i<nums.Length;i++)
{
if(nums[i]!=i+1)
{
return i+1;
}
}
return nums.Length+1;
}
}