刷题百天计划 Day19 荷兰国旗问题 中等
文章目录
- 学习目标:
- 学习内容:
- 学习时间:
- 学习产出:
-
-
- 问题1:数组分界
- 问题二:荷兰国旗问题
-
学习目标:
我会持续更新我独特的算法思路,希望能给大家带来不一样的思维拓展!
如果大家感觉有帮助的话,欢迎点赞关注支持哦!
你们的鼓励是我坚持下去的动力!
!!!
学习内容:
堆排序
牛客网链接
学习时间:
2022.4.10
学习产出:
问题1:数组分界
解决方案
问题二:荷兰国旗问题
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; }}