这是我遇到的一个有趣的问题,我觉得应该有一个优雅,可证明的解决方案,但我还没有完全得到它.我把它定义为:
定义一个函数,该函数将N个元素和一个正整数R的数组作为输入,并返回一个圆形数组(或您视为圆形的数组),其中没有两个相同的元素小于R,或者如果没有这样的则返回null订购是可能的.
所以f([a,b,d,c,a,d,k,a,d], 3)可能会回来[a,b,d,a,k,d,a,c,d],但f([a,b,d,c,a,d,k,a,d,a,a], 3)会回来null.我定义两个元件为R apart如果它们具有R-1在它们之间的元件,所以该阵列中[x,a,b,y],x和y3个分开在一侧上与0相距为另一方.
我觉得这也是一个很棒的面试问题.
在我的应用程序中,我试图通过意图将可序列化对象传递给另一个活动.意图并非完全由我创建,它是通过搜索建议创建和传递的.
在搜索建议的内容提供程序中,创建对象并将其放置在SUGGEST_COLUMN_INTENT_EXTRA_DATAMatrixCursor 的列中.但是,在我调用的接收活动中getIntent().getSerializableExtra(SearchManager.EXTRA_DATA_KEY),返回的对象是String类型,我无法将其强制转换为原始对象类.
我尝试为我的对象制作一个parcelable包装器,调用out.writeSerializable(...)并使用它,但同样的事情发生了.
返回的字符串就像一个通用的Object toString(),即com.foo.yak.MyAwesomeClass@4350058,所以我假设toString()被调用到我无法控制的地方.
希望我只是遗漏了一些简单的东西.谢谢您的帮助!
编辑:我的一些代码
这是在充当搜索权限的内容提供者中:
//These are the search suggestion columns
private static final String[] COLUMNS = {
"_id", // mandatory column
SearchManager.SUGGEST_COLUMN_TEXT_1,
SearchManager.SUGGEST_COLUMN_INTENT_EXTRA_DATA
};
//This places the serializable or parcelable object (and other info) into the search suggestion
private Cursor getSuggestions(String query, String[] projection) {
List<Widget> widgets = WidgetLoader.getMatches(query);
MatrixCursor cursor = new MatrixCursor(COLUMNS);
for (Widget w : widgets) {
cursor.addRow(new Object[] {
w.id
w.name
w.data //This …Run Code Online (Sandbox Code Playgroud) 我对RoR很新.在我的控制器中,我正在迭代数据库中的每个元组.对于每个表,我曾经调用过的每一列
SomeOtherModel.find_by_sql("SELECT column FROM model").each {|x| #etc }
哪个工作得很好.当我后来改为这个
Model.all(:select => "column").each {|x| #etc }
循环以大致相同的速度开始,但很快变慢到比find_by_sql命令慢100倍的速度.这些调用应该是相同的,所以我真的不知道发生了什么.
我知道这些调用不是最有效的,但这只是一个中间步骤,一旦这个工作正常,我会更优化它.
所以要澄清一下:为什么在世界上调用Model.all.each的速度比使用find_by_sql.each慢得多?
谢谢!