美文网首页
每天一道算法题2

每天一道算法题2

作者: 雨打空城 | 来源:发表于2022-01-17 22:41 被阅读0次

    【荷兰国旗问题】
    给定一个数组arr,和一个数num,请把小于num的数放在数组的
    左边,等于num的数放在数组的中间,大于num的数放在数组的
    右边,请返回小于num的最右下标和大于num数的最左边一个数的下标

    public class NetherlandsFlag {
        public static int[] partition(int[] arr, int l, int r, int p) {
            int less = l - 1;
            int more = r + 1;
            while(l < more) {
                if (arr[l] < p) {
                    swap(arr, ++less, l++);
                } else if (arr[l] > p) {
                    swap(arr, --more, l);
                } else {
                    l++;
                }
            }
    
            return new int[] {less + 1, more -1};
        }
    }

    相关文章

      网友评论

          本文标题:每天一道算法题2

          本文链接:https://www.haomeiwen.com/subject/vquhhrtx.html