2-Color Dutch National Flag Problem 问题 a[0..n-1]中包含红元素或蓝元素;重新放置使得 红元素均在蓝元素之前. 循环不变式 每一次循环,a[0...k-1]是红色 实例代码 #include <iostream> #include <vector> using namespace std; class Solution { public: //将仅包含1,2组成的数组用循环不变式的方式将数组转换成2在前面,1在后面. void loop_…
第二周课程的Elementray Sorts部分练习测验Interview Questions的第3题荷兰国旗问题很有意思.题目的原文描述如下: Dutch national flag. Given an array of n buckets, each containing a red, white, or blue pebble, sort them by color. The allowed operations are: swap(i,j): swap the pebble in buc…
接前文,除了广泛使用在快速排序中.Partition算法还可以很容易的实现在无序序列中使用O(n)的时间复杂度查找kth(第k大(小)的数). 同样根据二分的思想,每完成一次Partition我们可以轻松的知道该位置前面有几个比自己小的数,后面有几个比自己大的数(或逆序相反).所以也能知道自己是第几大或者小的数. 查找kth(大/小) func partition(left int, right int, arr []int) (int) { i := left j := right pivot…
Given an unsorted array nums, reorder it such that nums[0] < nums[1] > nums[2] < nums[3].... Example 1: Input: nums = [1, 5, 1, 1, 6, 4] Output: One possible answer is [1, 4, 1, 5, 1, 6]. Example 2: Input: nums = [1, 3, 2, 2, 3, 1] Output: One po…
算法面试过程中,题目类型多,数量大.大家都不可避免的会在LeetCode上进行训练.但问题是,题目杂,而且已经超过1300道题. 全部刷完且掌握,不是一件容易的事情.那我们应该怎么办呢?找规律,总结才是制胜法宝. 下面我们就来看看 Grokking the Coding Interview: Patterns for Coding Questions 的分类及每个类型的经典题目: 1. Pattern: Sliding window,滑动窗口类型 经典题目: Maximum Sum Subar…
I collect and make up this pseudocode from the book: <<Introduction to the Design and Analysis of Algorithms_Second Edition>> _ Anany Levitin Note that throughout the paper, we assume that inputs to algorithms fall within their specified range…