这是谷歌最近的采访问题:
我们将f(X,Y)定义为X和Y的二进制表示中的不同对应位的数量.例如,f(2,7)= 2,因为2和7的二进制表示分别是010和111.第一和第三位不同,因此f(2,7)= 2.
你得到一个N正整数的数组,A1,A2,...,AN.求所有对(i,j)的f(Ai,Aj)之和,使得1≤i,j≤N
例如:
A = [1,3,5]
我们回来
f(1,1)+ f(1,3)+ f(1,5)+ f(3,1)+ f(3,3)+ f(3,5)+ f(5,1)+ f (5,3)+ f(5,5)=
0 + 1 + 1 + 1 + 0 + 2 + 1 + 2 + 0 = 8
我能想到这个解决方案是O(n ^ 2)
int numSetBits(unsigned int A) {
int count = 0;
while(A != 0) {
A = A & (A-1);
count++;
}
return count;
}
int count_diff_bits(int a, int b)
{
int x = a ^ b;
return numSetBits(x);
} …
Run Code Online (Sandbox Code Playgroud) 我最近开始在我的项目中使用Android Volley.大多数教程中提到的常见做法是以这种方式使用它:
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.GET,
url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
// do something
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// do something.
}
});
Run Code Online (Sandbox Code Playgroud)
我的疑问是 - 我们是否必须在我们需要提出请求的任何地方重复此代码.我试图通过创建一个辅助类来放入一个共同的onResponse和onErrorResponse处理程序:
public class CustomJSONObjectRequest extends JsonObjectRequest {
private BaseResource resource;
private String queryId;
private String paramArgs;
public CustomJSONObjectRequest(int method, String url, JSONObject
jsonRequest,
Response.Listener<JSONObject> listener,
final Response.ErrorListener errorListener,
final Context ctx,
final BaseResource baseResource) {
super(method, url, jsonRequest,
new Response.Listener<JSONObject>() { …
Run Code Online (Sandbox Code Playgroud) 我正在使用express-validator来验证我的快速应用程序中的POST数据.我有一个表单,其中有一个选择,在用户可以选择多个选项:
<select name="category" multiple id="category">
<option value="1">category 1 </option>
.......
</select>
Run Code Online (Sandbox Code Playgroud)
如果我选择多个值,提交表单后的有效负载会显示此信息:
...&category=1&category=2&....
Run Code Online (Sandbox Code Playgroud)
现在,在我的Express应用程序中,我尝试像这样验证它:
req.checkBody('category', 'category cannot be empty').notEmpty();
Run Code Online (Sandbox Code Playgroud)
但是,即使我发送多个值后,我总是得到错误 - category cannot be empty
.如果我打印我的变量req.body.category[0]
- 我得到数据.但是,不知何故无法理解我需要将其传递给验证器的方式.
我正在通过REMZI的并发部分,而在通过互斥体部分时,对此感到困惑:
为了避免繁忙的等待,互斥体实现采用park()
/ unpark()
机制(在Sun OS上),该机制将等待线程与其线程ID放入队列中。稍后,pthread_mutex_unlock()
它将从队列中删除一个线程,以便调度程序可以选择该线程。同样,Futex的实现(Linux上的互斥量实现)使用相同的机制。
我仍然不清楚队列在哪里。它是在运行进程的地址空间中还是在内核内部?
我对条件变量的另一个疑问。是pthread_cond_wait()
并pthread_cond_signal()
使用普通信号和等待方法,还是使用它们的某些变体?
这是前段时间问我的面试问题:
假设您得到一个表达式E = x1 y1 x2 y2 .... yn-1 xn。
其中Xi属于自然数,Yi属于{+,*}
您需要括号以使其最大化E的值?
我能够朝着动态编程的方向思考,并且可以将其与矩阵链乘法问题联系起来,但是一直坚持推导这一问题的确切递归关系。
而且,后续问题对我来说使情况复杂化:
让我们将Yi更改为{+,-,*,/},然后如何最大化E?现在在该集合中添加%运算符。然后如何最大化E?
关于如何解决并为此建立解决方案的解释会很棒。