avatar
h*2
2
上周末做的oniline test。 同 bless!
话说大概多久给答复啊。
avatar
l*5
3
上周去的onsite,至今无音讯。。。求 bless吧。。。
avatar
h*2
4
Online test 之后多就给的回复呢?
谢谢啊,bless all!

【在 l********5 的大作中提到】
: 上周去的onsite,至今无音讯。。。求 bless吧。。。
avatar
c*0
7
bless~~
avatar
s*x
8
我觉得geekforgeeks 给的答案并不好,太复杂了,应该用reverse words in a string
的解法。
1234567
7654321
3456712
You can write code easily.
avatar
m*l
9


string

【在 s**x 的大作中提到】
: 我觉得geekforgeeks 给的答案并不好,太复杂了,应该用reverse words in a string
: 的解法。
: 1234567
: 7654321
: 3456712
: You can write code easily.

avatar
h*2
11
上周末做的oniline test。 同 bless!
话说大概多久给答复啊。
avatar
l*5
12
上周去的onsite,至今无音讯。。。求 bless吧。。。
avatar
h*2
13
Online test 之后多就给的回复呢?
谢谢啊,bless all!

【在 l********5 的大作中提到】
: 上周去的onsite,至今无音讯。。。求 bless吧。。。
avatar
c*0
16
bless~~
avatar
s*x
17
我觉得geekforgeeks 给的答案并不好,太复杂了,应该用reverse words in a string
的解法。
1234567
7654321
3456712
You can write code easily.
avatar
m*l
18


string

【在 s**x 的大作中提到】
: 我觉得geekforgeeks 给的答案并不好,太复杂了,应该用reverse words in a string
: 的解法。
: 1234567
: 7654321
: 3456712
: You can write code easily.

avatar
k*g
19
在网上找到个更快的:
void rotate(int a[], int k, int n) {
int i=0;
for (; i+kif (n%k == 0) return;
k--;
for (; i}
谁能解释下思路?
avatar
c*h
21
如果n是k整倍数,一个for就是把第一组k个元素逐个平移到最后的过程。done!
如果n是k整数倍+零头,先昨晚这个过程,必然有k-零头个数stuck在最后一个k的整
数倍区间,对他们再平移一次。

【在 k***g 的大作中提到】
: 在网上找到个更快的:
: void rotate(int a[], int k, int n) {
: int i=0;
: for (; i+k: if (n%k == 0) return;
: k--;
: for (; i: }
: 谁能解释下思路?

avatar
c*c
22
bless
avatar
b*k
23
thanks for sharing, bless!
avatar
p*r
24
上面的回复中已经有好的方法了
没必要用额外空间,
1 2 3 4 5 6 7
翻转左半部分变成 2 1 3 4 5 6 7
翻转右半部分变成 2 1 7 6 5 4 3
翻转整个数组 3 4 5 6 7 1 2
Bingo

【在 s******d 的大作中提到】
: 题目很简单,脑子发蒙。郁闷啊
: http://www.geeksforgeeks.org/array-rotation/

avatar
w*p
25
bless
avatar
m*t
26
programming pearl 上的例题啊。前几年国内研究生计算机统考也考了这道题。
这是经典题目啊,做不出来只能说明准备不充分
avatar
y*a
27
avatar
w*1
28
for (int i=0; iif(i-d<0)
swap(arr, i-d+n, i);
else if(i-d>=0)
swap(arr, i-d, i);
}
avatar
M*i
29
这个解好像有问题。
for example, array {1,2,3,4,5}, k = 3, n = 5
I = 0 swap(a[0],a[3]) ==> 4,2,3,1,5
I = 1 swap(a[1],a[4]) ==> 4,5,3,1,2
then second loop
I == 2, k -- ==> k = 2
swap(a[2], a[4]) ==> 4, 5, 2, 1, 3
I == 3, k = 1
swap(a[3], a[4]) ==> 4, 5, 2, 3, 1
I == 4, k == 0 stop.
final arr 4, 5, 2, 3, 1
expected arr 4, 5, 1, 2, 3

【在 k***g 的大作中提到】
: 在网上找到个更快的:
: void rotate(int a[], int k, int n) {
: int i=0;
: for (; i+k: if (n%k == 0) return;
: k--;
: for (; i: }
: 谁能解释下思路?

avatar
t*l
30
use pointer jumping, the number of iteration is GCD(n, k), O(1) space.

【在 s******d 的大作中提到】
: 题目很简单,脑子发蒙。郁闷啊
: http://www.geeksforgeeks.org/array-rotation/

avatar
s*r
31
版上说的A家到底是哪家啊??觉得除了Alibaba,无聊Apple还是Amazon都没法和FLG比
avatar
d*n
32
How about this:
void rotate(int a[], int k, int n) {
int i=0;
while(k > 0)
{
for(; i+kint lastK = k;
k = n % k;
n = lastK;
}
}

【在 M******i 的大作中提到】
: 这个解好像有问题。
: for example, array {1,2,3,4,5}, k = 3, n = 5
: I = 0 swap(a[0],a[3]) ==> 4,2,3,1,5
: I = 1 swap(a[1],a[4]) ==> 4,5,3,1,2
: then second loop
: I == 2, k -- ==> k = 2
: swap(a[2], a[4]) ==> 4, 5, 2, 1, 3
: I == 3, k = 1
: swap(a[3], a[4]) ==> 4, 5, 2, 3, 1
: I == 4, k == 0 stop.

avatar
m*g
33
这个验证通过:
#include
#include
#include
using namespace std;
void rotate(int a[], int k, int n) {
int i=0;
k = k%n;
for (; i+kif (n%k == 0) return;
rotate(&a[i], k - n%k, k);
}
int main()
{
int i;
int a[]= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
rotate(a, 5, 12);
for(i=0; iprintf( "%d ", a[i]);
}
printf("n");
return 0;
}

【在 d****n 的大作中提到】
: How about this:
: void rotate(int a[], int k, int n) {
: int i=0;
: while(k > 0)
: {
: for(; i+k: int lastK = k;
: k = n % k;
: n = lastK;
: }

avatar
M*i
34
这个差不多了。 不过这么recursive一下, 好像没有经典做法三次倒转optimal。

【在 m**********g 的大作中提到】
: 这个验证通过:
: #include
: #include
: #include
: using namespace std;
: void rotate(int a[], int k, int n) {
: int i=0;
: k = k%n;
: for (; i+k: if (n%k == 0) return;

avatar
d*n
35
Fixed a bug below.

【在 d****n 的大作中提到】
: How about this:
: void rotate(int a[], int k, int n) {
: int i=0;
: while(k > 0)
: {
: for(; i+k: int lastK = k;
: k = n % k;
: n = lastK;
: }

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。