小编Duk*_*ing的帖子

如果该行或列包含0,则将矩阵中的每个单元格设置为0

给定具有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在矩阵中.

puzzle algorithm optimization

152
推荐指数
4
解决办法
5万
查看次数

检查字符串是否包含列表中的元素(字符串)

对于以下代码块:

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)进行检查.

是否有更好(更有效)的方法来编写此代码?

c# vb.net performance coding-style list

141
推荐指数
4
解决办法
21万
查看次数

如何检查数组是否为空/空?

我有int没有元素的数组,我试图检查它是否为空.

例如,为什么下面代码中的if语句永远不会成立?

int[] k = new int[3];

if(k==null)
{
    System.out.println(k.length);
}
Run Code Online (Sandbox Code Playgroud)

java arrays

120
推荐指数
4
解决办法
54万
查看次数

从一个文件中删除另一个文件中的行

我有一个文件f1:

line1
line2
line3
line4
..
..
Run Code Online (Sandbox Code Playgroud)

我想删除另一个文件中的所有行f2:

line2
line8
..
..
Run Code Online (Sandbox Code Playgroud)

我想的东西catsed,这甚至还没有接近我所预期的.我怎样才能做到这一点?

bash scripting sh

117
推荐指数
5
解决办法
7万
查看次数

如何改进逻辑以检查4个布尔值是否与某些情况匹配

我有四个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)

c++ if-statement

117
推荐指数
18
解决办法
1万
查看次数

使用自定义排序顺序对对象的ArrayList进行排序

我希望为我的地址簿应用程序实现一个排序功能.

我想要排序ArrayList<Contact> contactArray.Contact是一个包含四个字段的类:姓名,家庭电话号码,手机号码和地址.我想要排序name.

如何编写自定义排序功能来执行此操作?

java sorting collections arraylist

114
推荐指数
4
解决办法
17万
查看次数

如何确定二叉树是否平衡?

这些学年已经有一段时间了.在医院找到了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)

这是一个很好的实现吗?还是我错过了什么?

java algorithm binary-tree data-structures

111
推荐指数
9
解决办法
12万
查看次数

如果在循环条件下使用,是否会多次计算strlen?

我不确定以下代码是否会导致冗余计算,还是特定于编译器?

for (int i = 0; i < strlen(ss); ++i)
{
    // blabla
}
Run Code Online (Sandbox Code Playgroud)

strlen()每次i增加时会计算出来吗?

c c++ optimization gcc strlen

108
推荐指数
3
解决办法
6425
查看次数

如何在Java中生成连续整数的列表或数组?

是否有一种简短而甜蜜的方式来生成一个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个元素的列表:

  • classicArrayList:上面在我的问题中给出的代码(和adarshr的答案基本相同).
  • eclipseCollections:下面使用Eclipse Collections 8.0 在Donald的回答中给出的代码.
  • guavaRange:daveb下面的答案中给出的代码.从技术上讲,这不是创造一个List<Integer>而是创造一个ContiguousSet<Integer>- 但由于它Iterable<Integer>按顺序实现,它主要用于我的目的.
  • intStreamRange:下面的Vladimir的答案中给出的代码,它使用了IntStream.rangeClosed()- 这是在Java 8中引入的.
  • streamIterate …

java arrays collections apache-commons guava

105
推荐指数
5
解决办法
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)

algorithm search multidimensional-array

87
推荐指数
6
解决办法
6万
查看次数