Redian新闻
>
有没有木工版
avatar
有没有木工版# Living
a*2
1
1.判断string match是否包含string pattern里面的所有的character
2.一个数组,找出数组中有多少个cycle。cycle:每个element去找他对应的index,如
果index在界内,就继续找这个index的值所对应的下一个index直到找到一个cycle,或
者出界。大概就这个意思
比方说 0,2,1,9,10
对于0, index 0 就是 val 0, 所以是一个cycle
对于2, index 2 是 1, 在界内,就找 index 1,which is 2,所以又是一个cycle
总共4个cycles: 0-->0, 2 -> 1, 9 -> 界外, 10->界外
先要求写了个可以有extra space的,然后要求no extra space
avatar
T*U
2
想要搞2×8×25的beam,最长的也就2×8×16,怎么连起来结实好看?不是用来承重的
avatar
a*g
3
第二题的意思是说:
if (array[i] < array.length) 就是一个cycle么?

【在 a**********2 的大作中提到】
: 1.判断string match是否包含string pattern里面的所有的character
: 2.一个数组,找出数组中有多少个cycle。cycle:每个element去找他对应的index,如
: 果index在界内,就继续找这个index的值所对应的下一个index直到找到一个cycle,或
: 者出界。大概就这个意思
: 比方说 0,2,1,9,10
: 对于0, index 0 就是 val 0, 所以是一个cycle
: 对于2, index 2 是 1, 在界内,就找 index 1,which is 2,所以又是一个cycle
: 总共4个cycles: 0-->0, 2 -> 1, 9 -> 界外, 10->界外
: 先要求写了个可以有extra space的,然后要求no extra space

avatar
e*t
4
按照做molding的方法,是斜切45度∠。

【在 T*U 的大作中提到】
: 想要搞2×8×25的beam,最长的也就2×8×16,怎么连起来结实好看?不是用来承重的
: 。

avatar
a*2
5
不是,如果array[i] < array.length)就把i=array[i]继续找直到找到这轮中已经访问
过的元素就是一个cycle
比方说2,0,1,4,3,
array[0] = 2,那么访问arry[2]
array[2] = 1,那么继续访问array[1]
array[1] = 0, 0已经在这次扫描中访问过了,那么就形成一个cycle
对于4,3也是一样,所有总共两个cycle

【在 a*****g 的大作中提到】
: 第二题的意思是说:
: if (array[i] < array.length) 就是一个cycle么?

avatar
T*U
6
有道理,记下。

【在 e********t 的大作中提到】
: 按照做molding的方法,是斜切45度∠。
avatar
g*i
7
写了一个要extra space的
private static int findCycleNum(int[] input){
if(input==null||input.length<1)
return -1;
int len=input.length;
int[] visited=new int[len];
int visitedCount=0; //shorcut if all is visited
int cycleCount=0;
int temp;
boolean newCycle=false;
for(int i=0;iif(visited[i]==1)
continue;
temp=i;
newCycle=true;
while(tempif(visited[temp]==0){
visited[temp]=1;
visitedCount++;
temp=input[temp];
}
else if(temp==i){ //backto cycle start
break;
}
else{
newCycle=false;
break;
}
}
if(newCycle)
cycleCount++;
}
return cycleCount;
}

【在 a**********2 的大作中提到】
: 不是,如果array[i] < array.length)就把i=array[i]继续找直到找到这轮中已经访问
: 过的元素就是一个cycle
: 比方说2,0,1,4,3,
: array[0] = 2,那么访问arry[2]
: array[2] = 1,那么继续访问array[1]
: array[1] = 0, 0已经在这次扫描中访问过了,那么就形成一个cycle
: 对于4,3也是一样,所有总共两个cycle

avatar
m*y
8
Steel fasteners.
We used to just nail 2X8s to two opposite sides.
avatar
g*i
9
这题in space什么思路?

【在 a**********2 的大作中提到】
: 不是,如果array[i] < array.length)就把i=array[i]继续找直到找到这轮中已经访问
: 过的元素就是一个cycle
: 比方说2,0,1,4,3,
: array[0] = 2,那么访问arry[2]
: array[2] = 1,那么继续访问array[1]
: array[1] = 0, 0已经在这次扫描中访问过了,那么就形成一个cycle
: 对于4,3也是一样,所有总共两个cycle

avatar
R*r
10
凹凸型,然后上胶,不放心中间再上根螺丝

【在 T*U 的大作中提到】
: 想要搞2×8×25的beam,最长的也就2×8×16,怎么连起来结实好看?不是用来承重的
: 。

avatar
P*c
11
第二题有重复数字吗?

【在 a**********2 的大作中提到】
: 1.判断string match是否包含string pattern里面的所有的character
: 2.一个数组,找出数组中有多少个cycle。cycle:每个element去找他对应的index,如
: 果index在界内,就继续找这个index的值所对应的下一个index直到找到一个cycle,或
: 者出界。大概就这个意思
: 比方说 0,2,1,9,10
: 对于0, index 0 就是 val 0, 所以是一个cycle
: 对于2, index 2 是 1, 在界内,就找 index 1,which is 2,所以又是一个cycle
: 总共4个cycles: 0-->0, 2 -> 1, 9 -> 界外, 10->界外
: 先要求写了个可以有extra space的,然后要求no extra space

avatar
m*y
12
Hehe, if you want to play it fancy, start with tongue and groove.
Can find more patterns on internet.

【在 e********t 的大作中提到】
: 按照做molding的方法,是斜切45度∠。
avatar
n*s
13
in space may need to change the array
avatar
n*s
14
int x[]= {...} // assuming -1 is not an eclement in the arrray
int i, t;
int cyc_count = 0;
for(i = 0; iif(x[i]!=-1){
t = x[i];
x[i]=-1;
while(x[t!]=-1 && t < size){
int tmp = t;
t = x[t]
x[tmp] = -1;
}
cyc_count++;
}
}
return cyc_count;
avatar
P*c
15
这个好像不太对,上来就把x[i]设成-1, 后面应该判断是不是回到原位置了吧。

【在 n*******s 的大作中提到】
: int x[]= {...} // assuming -1 is not an eclement in the arrray
: int i, t;
: int cyc_count = 0;
: for(i = 0; i: if(x[i]!=-1){
: t = x[i];
: x[i]=-1;
: while(x[t!]=-1 && t < size){
: int tmp = t;
: t = x[t]

avatar
P*c
16
这个时间复杂度是多少?每个元素最多被访问几次?

【在 g*****i 的大作中提到】
: 写了一个要extra space的
: private static int findCycleNum(int[] input){
: if(input==null||input.length<1)
: return -1;
: int len=input.length;
: int[] visited=new int[len];
: int visitedCount=0; //shorcut if all is visited
: int cycleCount=0;
: int temp;
: boolean newCycle=false;

avatar
a*2
17
对,不考虑重复

【在 P**********c 的大作中提到】
: 第二题有重复数字吗?
avatar
a*2
18
我当时也是这个思路

【在 P**********c 的大作中提到】
: 这个好像不太对,上来就把x[i]设成-1, 后面应该判断是不是回到原位置了吧。
avatar
g*y
19
Test fail:
{0, 2, 1, 9, 10} expected 4, returned 2
{1, 9, 3, 0} expected 1, returned 2
avatar
g*y
20
这可能不是最简洁的, 但是应该work, 重复也可以。唯一要求是所有数 >= 0
public int count(int[] x) {
int count = 0;

for (int i=0; iif (x[i] == i) {
count++;
x[i] = -x[i];
}
if (x[i] <= 0) continue;

int t = i;
while (x[t] > 0 && x[t] < x.length) {
x[t] = -x[t];
t = -x[t];
}
if (x[t] > 0 || t == i) count++;
if (x[t] > 0) x[t] = -x[t];
}

return count;
}
avatar
o*i
21
不需要改动原数组:
int CountCycle1 ( int array[], int len ) {
int t, sum = 0;
for ( int i=0; i< len; i++ ) {
t = i;
while(1) {
if (array[t] >= len || array[t] < i) break;
if (array[array[t]] == array[i]) {
sum++;
break;
}
t = array[t];
}
}
return sum;
}
测试结果:
{0, 2, 1, 9, 10}; 2
{3, 2, 1, 4, 0}; 2
{0, 2, 1, 9, 3}; 2
{0, 1, 2, 3, 4}; 5
{4, 0, 1, 2, 3}; 1
{0, 2, 1, 9, 10}; 2
{1, 9, 3, 0}; 0
avatar
o*i
22

这个应该是2
这个应该是0吧

【在 g**********y 的大作中提到】
: Test fail:
: {0, 2, 1, 9, 10} expected 4, returned 2
: {1, 9, 3, 0} expected 1, returned 2

avatar
g*y
23
1, 9, 3, 0
相当于 3 -> 0 -> 1 - > 9
按题意这是一个cycle,见原题: 出界的也算cycle。

【在 o***i 的大作中提到】
:
: 这个应该是2
: 这个应该是0吧

avatar
g*y
24
这个code怎么测试过的?array[array[t]]直接就出界了

【在 o***i 的大作中提到】
: 不需要改动原数组:
: int CountCycle1 ( int array[], int len ) {
: int t, sum = 0;
: for ( int i=0; i< len; i++ ) {
: t = i;
: while(1) {
: if (array[t] >= len || array[t] < i) break;
: if (array[array[t]] == array[i]) {
: sum++;
: break;

avatar
g*y
25
这个改一下可以处理出界的情况,也不需要改原数组。但时间是O(N^2)

【在 o***i 的大作中提到】
: 不需要改动原数组:
: int CountCycle1 ( int array[], int len ) {
: int t, sum = 0;
: for ( int i=0; i< len; i++ ) {
: t = i;
: while(1) {
: if (array[t] >= len || array[t] < i) break;
: if (array[array[t]] == array[i]) {
: sum++;
: break;

avatar
o*i
26
不好意思,没认真看原题,出界的我的code里不算的,呵呵

【在 g**********y 的大作中提到】
: 1, 9, 3, 0
: 相当于 3 -> 0 -> 1 - > 9
: 按题意这是一个cycle,见原题: 出界的也算cycle。

avatar
o*i
27
这是个奇迹,:)

【在 g**********y 的大作中提到】
: 这个code怎么测试过的?array[array[t]]直接就出界了
avatar
o*i
28
出界也算的话不太好处理了

【在 g**********y 的大作中提到】
: 这个改一下可以处理出界的情况,也不需要改原数组。但时间是O(N^2)
avatar
o*i
29
这次应该可以了:
int CountCycle ( int array[], int len ) {
int t, sum = 0;
for ( int i=0; i< len; i++ ) {
t = i;
if (array[t] >= len || array[t] < 0) sum++;
while(1) {
if (array[t] >= len || array[t] < i) break;
if (array[array[t]] == array[i]) {
sum++;
break;
}
t = array[t];
}
}
return sum;
}
加个判断出界的语句。
测试结果:
{1, 2, 3, 4, 10};
{1, 2, 3, 0, 10};
{1, 2, 0, 9, 30};
{0, 1, 2, 3, 4};
{4, 0, 1, 2, 3};
{10, 10, 10, 20, 30};
{1, 9, 3, 0};
1
2
3
5
1
5
1

【在 o***i 的大作中提到】
: 出界也算的话不太好处理了
avatar
r*y
30
#2, any complexity requirements? Given an array A[1,...,N], starting from A[
1],
find a cycle and determine the smallest index i1 such that A[i1] is in the
cycle. Then starting from A[2] to find the second cycle and determine the
smallest index i2. if i2==i1, this means we find the same cycle and we need
to
ignore this cycle and go ahead starting from A[3]...

找他对应的

【在 a**********2 的大作中提到】
: 1.判断string match是否包含string pattern里面的所有的character
: 2.一个数组,找出数组中有多少个cycle。cycle:每个element去找他对应的index,如
: 果index在界内,就继续找这个index的值所对应的下一个index直到找到一个cycle,或
: 者出界。大概就这个意思
: 比方说 0,2,1,9,10
: 对于0, index 0 就是 val 0, 所以是一个cycle
: 对于2, index 2 是 1, 在界内,就找 index 1,which is 2,所以又是一个cycle
: 总共4个cycles: 0-->0, 2 -> 1, 9 -> 界外, 10->界外
: 先要求写了个可以有extra space的,然后要求no extra space

avatar
b*8
31
看起来很妙啊。

【在 o***i 的大作中提到】
: 这次应该可以了:
: int CountCycle ( int array[], int len ) {
: int t, sum = 0;
: for ( int i=0; i< len; i++ ) {
: t = i;
: if (array[t] >= len || array[t] < 0) sum++;
: while(1) {
: if (array[t] >= len || array[t] < i) break;
: if (array[array[t]] == array[i]) {
: sum++;

avatar
g*y
32
把olivi的写法再简化一下:
public int numberOfCycles(int[] a) {
int cycle = 0;
for (int i=0; iif (a[i] >= a.length) cycle++;
int t = i;
while (a[t] > i && a[t] < a.length) t = a[t];
if (a[t] == i) cycle++;
}
return cycle;
}

【在 o***i 的大作中提到】
: 这次应该可以了:
: int CountCycle ( int array[], int len ) {
: int t, sum = 0;
: for ( int i=0; i< len; i++ ) {
: t = i;
: if (array[t] >= len || array[t] < 0) sum++;
: while(1) {
: if (array[t] >= len || array[t] < i) break;
: if (array[array[t]] == array[i]) {
: sum++;

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