【发布时间】:2016-10-28 17:04:58
【问题描述】:
问题:
在没有任何消息/调用的情况下,在myInterViewArray 中查找 K 的值
我得到了这个提示:
数组中的数字永远不会超过 1-9。
NSArray *myInterViewArray = @[@2,@1,@3,@9,@9,@8,@7];
例子:
如果发送 3,则数组将返回 myInterViewArray * 3 中的 3 个最大值。所以在下面的例子中,K = 9 + 9 + 8。
--
前段时间我在一次采访中被问到这个问题,完全被难住了。我能想到的第一个解决方案是这样的:
面试测试数组:
[self findingK:myInterViewArray abc:3];
-(int)findingK:(NSArray *)myArray abc:(int)k{ // With Reverse Object Enumerator
myArray = [[[myArray sortedArrayUsingSelector:@selector(compare:)] reverseObjectEnumerator] allObjects];
int tempA = 0;
for (int i = 0; i < k; i++) {
tempA += [[myArray objectAtIndex:i] intValue];
}
k = tempA;
return k;
}
但显然这是一个很大的禁忌。他们希望我在不使用任何消息的情况下找到 K 的值。这意味着我无法使用sortedArrayUsingSelector 甚至reverseObjectEnumerator。
现在进入重点!
我已经考虑了很长时间,但我仍然想不出没有消息的方法。有人有什么想法吗?
【问题讨论】:
-
是我自己还是你真的指定了程序应该做什么?它应该找到什么?克?什么k?
-
抱歉给您带来了困惑.. 我希望我的编辑能解决问题@luk2302
-
" 不使用任何消息" ?您返回 k 个最大值的加法,对吗?因为你的解释还不是很清楚
-
你甚至可以在没有消息或数组长度的情况下访问数组下标吗?之后,它就像任何其他语言一样是普通的旧编程。但我认为前两件事是不可能的。
-
那是他们在面试问题中使用的确切术语吗?听起来是不可能的。也许他们只是在测试你(说“不”);)
标签: objective-c