一些算法1

石头 / 2023-05-05 / 原文

// See https://aka.ms/new-console-template for more information

int[] nums={0,1,1,2,3,4,5};

int[] stockes={8,5,6,54,5,6,7,8};

int[] b={2,232,4,5,6,8};
int[] c={1,2,3,4,5,6,9};



var x =new List<A>{};

x.Add(null);
x.Add(new A{Name="AAAA"});



var a= new Test();

System.Console.WriteLine(a.intersect(b,c));

System.Console.WriteLine(a.BuyStock(stockes));
System.Console.WriteLine(a.RemoveDuplicates(nums));//找重复
System.Console.WriteLine(a.rotate(nums,3));
Console.WriteLine("Hello, World!");

class A{
    public string Name {get;set;}
}

class Test{

    public int RemoveDuplicates(int[] nums)
    {
        int left=0;

        for(var right=1;right<nums.Length;right++){
            if(nums[left]!=nums[right]){
                nums[++left]=nums[right];        
            }
        }
        return ++left;
    }

    public int BuyStock(int[] Prices)
    {
        int total=0;
        for(var i=0;i<Prices.Length-1;i++){
            total+=Math.Max(Prices[i+1]-Prices[i],0);
        }
        
        return total;
    }


    public int[] rotate (int[] nums,int k)
    {
        int Length=nums.Length;
        int [] temp =new int[Length];
        for(var i=0;i<nums.Length;i++){
            temp[i]=nums[i];
        }

        for(int i=0;i<nums.Length;i++){
            nums[(i+k)% Length]=temp[i];
        }
        return nums;
    }


    public bool containsDuplicate(int[] nums){
        Array.Sort(nums);
        for (int ind = 1; ind < nums.Length; ind++) {
            if (nums[ind] == nums[ind - 1]) {
                return true;
            }
        }
        return false;
    }


    public int[] intersect(int[] nums1,int[] nums2)
   
    {
        Array.Sort(nums1);
        Array.Sort(nums2);
        List<int> list =new List<int>();
       
        int i=0;
        int j=0;
        while(i<nums1.Length && j<nums2.Length){
            if(nums1[i]<nums2[j]){
                i++;
            }else if(nums1[i]>nums2[j]){
                j++;
            }else{
                i++;
                j++;
                list.Add(nums1[i]);
            }
        }

         return list.ToArray();

    }

}