> 文档中心 > 刷题百天计划 Day19 荷兰国旗问题 中等

刷题百天计划 Day19 荷兰国旗问题 中等

文章目录

  • 学习目标:
  • 学习内容:
  • 学习时间:
  • 学习产出:
      • 问题1:数组分界
      • 问题二:荷兰国旗问题

学习目标:

我会持续更新我独特的算法思路,希望能给大家带来不一样的思维拓展!
如果大家感觉有帮助的话,欢迎点赞关注支持哦!
你们的鼓励是我坚持下去的动力!
!!!

学习内容:

堆排序
牛客网链接
在这里插入图片描述
在这里插入图片描述

学习时间:

2022.4.10

学习产出:

问题1:数组分界

在这里插入图片描述
解决方案
在这里插入图片描述
在这里插入图片描述
刷题百天计划 Day19 荷兰国旗问题 中等

在这里插入图片描述

问题二:荷兰国旗问题

在这里插入图片描述
在这里插入图片描述

刷题百天计划 Day19 荷兰国旗问题 中等
在这里插入图片描述
在这里插入图片描述

using System; class test{    static void Main(){ string[] getin=Console.ReadLine().Split(' '); int count=Convert.ToInt32(getin[0]); int Target=Convert.ToInt32(getin[1]); string[] input=Console.ReadLine().Split(' ');   int[] arr=new int[count]; for(int i=0;i<count;i++){     arr[i]=Convert.ToInt32(input[i]); }   int[] res=partition(arr,0,count-1,Target); if(res[0]>res[1]){     Console.WriteLine(-1+" "+-1); }else{      Console.WriteLine(res[0]+" "+res[1]); }     }  static int[] partition(int[] arr,int L,int R,int P){   int less=L-1; int more=R+1; int index=L; while(index<more){     if(arr[index]<P){  Swap(arr, ++less, index++);     }else if(arr[index]>P){  Swap(arr, --more, index);     }else{  index++;     } } return new int[]{less+1,more-1};    }  static void Swap(int[] arr,int i,int j){ int temp=arr[i]; arr[i]=arr[j]; arr[j]=temp;    }}