刷题总结#17

来源:互联网 发布:小狐仙软件功能 编辑:程序博客网 时间:2024/06/04 18:31

#48. Rotate Image
You are given an n x n 2D matrix representing an image.

Rotate the image by 90 degrees (clockwise).

/* * clockwise rotate * first reverse up to down, then swap the symmetry  * 1 2 3     7 8 9     7 4 1 * 4 5 6  => 4 5 6  => 8 5 2 * 7 8 9     1 2 3     9 6 3*/void rotate(vector<vector<int> > &matrix) {    reverse(matrix.begin(), matrix.end());    for (int i = 0; i < matrix.size(); ++i) {        for (int j = i + 1; j < matrix[i].size(); ++j)            swap(matrix[i][j], matrix[j][i]);    }}/* * anticlockwise rotate * first reverse left to right, then swap the symmetry * 1 2 3     3 2 1     3 6 9 * 4 5 6  => 6 5 4  => 2 5 8 * 7 8 9     9 8 7     1 4 7*/void anti_rotate(vector<vector<int> > &matrix) {    for (auto vi : matrix) reverse(vi.begin(), vi.end());    for (int i = 0; i < matrix.size(); ++i) {        for (int j = i + 1; j < matrix[i].size(); ++j)            swap(matrix[i][j], matrix[j][i]);    }}

#313. Super Ugly Number
Write a program to find the nth super ugly number.

Super ugly numbers are positive numbers whose all prime factors are in the given prime list primes of size k. For example, [1, 2, 4, 7, 8, 13, 14, 16, 19, 26, 28, 32] is the sequence of the first 12 super ugly numbers given primes = [2, 7, 13, 19] of size 4.

Note:
(1) 1 is a super ugly number for any given primes.
(2) The given numbers in primes are in ascending order.
(3) 0 < k ≤ 100, 0 < n ≤ 106, 0 < primes[i] < 1000.
(4) The nth super ugly number is guaranteed to fit in a 32-bit signed integer.

int nthSuperUglyNumber(int n, vector<int>& primes) {        vector<int> index(primes.size(),0),ugly(n,INT_MAX);        ugly[0]=1;        for(int i=1;i<n;i++)        {            for(int j=0;j<primes.size();j++) ugly[i]=min(ugly[i],ugly[index[j]]*primes[j]);            for(int j=0;j<primes.size();j++) index[j]+=(ugly[i]==(ugly[index[j]]*primes[j]));        }        return ugly[n-1];    }

每一个新的ugly数都是从之前的乘出来的
index[j]表示第j个质数,此时已经乘到第几个数来了。
每次新产生的都是从ugly[index[j]]*primes[j]里面挑选出来,这是最小的几个数备选。

0 0