我试图解决这个问题时遇到了很多麻烦,而麻烦的根源在于创建一个O(n)复杂的算法.这是我正在努力解决的问题:
A长度数组n包含范围内的整数[0, .., n - 1].但是,它只包含n - 1不同的数字.因此,其中一个数字丢失,另一个数字重复.编写一个Java方法,该方法A作为输入参数并返回缺少的数字; 该方法应该运行O(n).例如,何时
A = [0, 2, 1, 2, 4],oddOneOut()应该返回3; 什么时候A = [3, 0, 0, 4, 2, 1],oddOneOut()应该回来5.
显然,这是一个用算法解决的简单问题,(很可能,我只是没有看到它!).我试图用各种方法解决它,但无济于事.我试图用Java解决它,但是如果你更习惯解决它,那也没关系.O(n2)O(n)
先感谢您...
下面我列出了一个我遇到麻烦的问题.这个问题是一个简单的嵌套循环,远离O(n ^ 2)解决方案,但我需要它是O(n).有什么想法应该解决这个问题吗?是否有可能形成两个方程式?
给定整数数组A,检查是否存在两个索引i和j,使得A [j] = 2*A [i].例如,在数组(25,13,16,7,8)上,算法应该输出"true"(因为16 = 2*8),而在数组(25,17,44,24)上算法应该输出"假".描述这个问题的算法,最坏情况下的运行时间优于O(n ^ 2),其中n是A的长度.
谢谢!
更新:应该注意的是,下面的问题是学术性质和核心位置的使用,或者位置数据的轮询与问题无关 - 执行此操作的正确方法始终是通过核心位置委托方法.我最初的问题最终归结为:"swift中是否有无限递归?(或尾递归)".答案是否定的.这是由于堆栈空间耗尽导致我的错误的原因.
原始问题:我遇到了一个通过闭包传递值的递归函数的问题.我是一个长期的Objective-C开发人员,但是没有在Swift编程很长时间,所以也许我错过了一些明显的东西.这是函数以及我如何调用它:
public func getLocation(completion: @escaping (CLLocationCoordinate2D?) -> ())
{
completion(self.currentLocation)
weak var weakSelf = self
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
weakSelf?.getLocation(completion: {location in
completion(weakSelf?.currentLocation)
})
}
}
LocationManager.shared.getLocation(completion: {location in
if(location != nil)
{
weakSelf?.lonLabel.text = "Lat: " + location!.latitude.description
weakSelf?.latLabel.text = "Lon: " + location!.longitude.description
}
})
Run Code Online (Sandbox Code Playgroud)
Thread 1: EXC_BAD_ACCESS (code=2, address=0x16f1b7fd0)运行一段时间后我得到的错误(描述)是这样的:
我想要完成的是将自动更新位置值传递给位置管理器对象.我正在考虑另一种方法,performSelector withObject afterDelay但在这一点上,我只是想知道为什么会崩溃?