给定具有0和1的NxN矩阵.将包含a的每一行设置0为all 0s并将包含a的每一列设置0为all 0s.
例如
1 0 1 1 0
0 1 1 1 0
1 1 1 1 1
1 0 1 1 1
1 1 1 1 1
Run Code Online (Sandbox Code Playgroud)
结果是
0 0 0 0 0
0 0 0 0 0
0 0 1 1 0
0 0 0 0 0
0 0 1 1 0
Run Code Online (Sandbox Code Playgroud)
微软工程师告诉我,有一个解决方案不涉及额外的内存,只有两个布尔变量和一个通过,所以我正在寻找答案.
顺便说一句,想象它是一个位矩阵,因此只允许1s和0s在矩阵中.
对于以下代码块:
For I = 0 To listOfStrings.Count - 1
If myString.Contains(lstOfStrings.Item(I)) Then
Return True
End If
Next
Return False
Run Code Online (Sandbox Code Playgroud)
输出是:
情况1:
myString: C:\Files\myfile.doc
listOfString: C:\Files\, C:\Files2\
Result: True
Run Code Online (Sandbox Code Playgroud)
案例2:
myString: C:\Files3\myfile.doc
listOfString: C:\Files\, C:\Files2\
Result: False
Run Code Online (Sandbox Code Playgroud)
列表(listOfStrings)可能包含多个项目(最少20个),并且必须根据数千个字符串(如myString)进行检查.
是否有更好(更有效)的方法来编写此代码?
我有int没有元素的数组,我试图检查它是否为空.
例如,为什么下面代码中的if语句永远不会成立?
int[] k = new int[3];
if(k==null)
{
System.out.println(k.length);
}
Run Code Online (Sandbox Code Playgroud) 我有一个文件f1:
line1
line2
line3
line4
..
..
Run Code Online (Sandbox Code Playgroud)
我想删除另一个文件中的所有行f2:
line2
line8
..
..
Run Code Online (Sandbox Code Playgroud)
我想的东西cat和sed,这甚至还没有接近我所预期的.我怎样才能做到这一点?
我有四个bool值:
bool bValue1;
bool bValue2;
bool bValue3;
bool bValue4;
Run Code Online (Sandbox Code Playgroud)
可接受的值是:
Scenario 1 | Scenario 2 | Scenario 3
bValue1: true | true | true
bValue2: true | true | false
bValue3: true | true | false
bValue4: true | false | false
Run Code Online (Sandbox Code Playgroud)
因此,例如,这种情况是不可接受的:
bValue1: false
bValue2: true
bValue3: true
bValue4: true
Run Code Online (Sandbox Code Playgroud)
目前我已经提出这个if声明来检测不良情况:
if(((bValue4 && (!bValue3 || !bValue2 || !bValue1)) ||
((bValue3 && (!bValue2 || !bValue1)) ||
(bValue2 && !bValue1) ||
(!bValue1 && !bValue2 && !bValue3 && …Run Code Online (Sandbox Code Playgroud) 我希望为我的地址簿应用程序实现一个排序功能.
我想要排序ArrayList<Contact> contactArray.Contact是一个包含四个字段的类:姓名,家庭电话号码,手机号码和地址.我想要排序name.
如何编写自定义排序功能来执行此操作?
这些学年已经有一段时间了.在医院找到了IT专家的工作.现在试着去做一些实际的编程.我现在正在研究二叉树,我想知道确定树是否高度平衡的最佳方法是什么.
我在考虑这个问题:
public boolean isBalanced(Node root){
if(root==null){
return true; //tree is empty
}
else{
int lh = root.left.height();
int rh = root.right.height();
if(lh - rh > 1 || rh - lh > 1){
return false;
}
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
这是一个很好的实现吗?还是我错过了什么?
我不确定以下代码是否会导致冗余计算,还是特定于编译器?
for (int i = 0; i < strlen(ss); ++i)
{
// blabla
}
Run Code Online (Sandbox Code Playgroud)
strlen()每次i增加时会计算出来吗?
是否有一种简短而甜蜜的方式来生成一个List<Integer>或者一个 Integer[]或者int[]从某个start值到end值的连续值?
也就是说,短于,但相当于以下1:
void List<Integer> makeSequence(int begin, int end) {
List<Integer> ret = new ArrayList<>(end - begin + 1);
for (int i=begin; i<=end; i++) {
ret.add(i);
}
return ret;
}
Run Code Online (Sandbox Code Playgroud)
番石榴的使用很好.
更新:
由于这个问题已经收到了几个很好的答案,无论是使用本机Java 8还是第三方库,我都认为我会测试所有解决方案的性能.
第一个测试只是[1..10]使用以下方法测试创建10个元素的列表:
List<Integer>而是创造一个ContiguousSet<Integer>- 但由于它Iterable<Integer>按顺序实现,它主要用于我的目的.IntStream.rangeClosed()- 这是在Java 8中引入的.我最近接受了这个面试问题,我很好奇它是一个很好的解决方案.
假设我有一个二维数组,其中数组中的所有数字从左到右,从上到下依次递增.
搜索和确定目标号码是否在阵列中的最佳方法是什么?
现在,我的第一个倾向是利用二进制搜索,因为我的数据已经排序.我可以确定O(log N)时间内的数字是否在一行中.然而,正是这两个方向让我失望.
我认为可能有用的另一种解决方案是从中间的某个地方开始.如果中间值小于我的目标,那么我可以确定它在中间的矩阵的左方形部分.然后我沿着对角线移动并再次检查,减小了目标可能存在的方格的大小,直到我对目标数字进行了磨练.
有没有人有解决这个问题的好主意?
示例数组:
从左到右,从上到下排序.
1 2 4 5 6
2 3 5 7 8
4 6 8 9 10
5 8 9 10 11
Run Code Online (Sandbox Code Playgroud) java ×4
algorithm ×3
arrays ×2
c++ ×2
collections ×2
optimization ×2
arraylist ×1
bash ×1
binary-tree ×1
c ×1
c# ×1
coding-style ×1
gcc ×1
guava ×1
if-statement ×1
list ×1
performance ×1
puzzle ×1
scripting ×1
search ×1
sh ×1
sorting ×1
strlen ×1
vb.net ×1