小编Han*_*man的帖子

codility绝对不同于数组的计数

所以我昨天接受了抄袭面试,并且今天被告知我失败了,不幸的是,我没有给出任何其他信息,无论是鳕鱼还是雇主都知道我搞砸了哪里,所以我会感谢一些帮助,知道我哪里出错了.我知道codility非常重视程序运行的速度以及它对大数字的行为方式.现在我没有复制粘贴问题所以这是我记得的大约

  1. 计算数组a中绝对不同的元素数量,这意味着如果数组中有-3和3,则这些数字不明显,因为| -3 | = | 3 |.我想一个例子可以更好地清除它

a = { - 5,-3,0,1,-3}结果为4,因为此数组中有4个绝对不同的元素.

问题还说a.length将<= 10000,最重要的是它声明假设数组按升序排序但我并不真正理解为什么我们需要它被排序

如果你认为我错过了某些问题,我会尝试进一步澄清问题.

这是我的代码

import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;


public class test2 {

    int test(int[] a){
        Set<Integer> s=new HashSet<Integer>();

        for(int i=0;i<a.length;i++){
            s.add(Math.abs(a[i]));

        }
        return s.size();

    }

    public static void main(String[] args) {
        test2 t=new test2();
        int[] a={1,1,1,2,-1};
        System.out.println(t.test(a));

    }

}
Run Code Online (Sandbox Code Playgroud)

c# c++ python java algorithm

11
推荐指数
2
解决办法
2万
查看次数

R计算数据帧或数组中相邻相同值的数量

我有一个来自流底的分类基质大小的数据集.由于我收集数据的方式,我可以在空间上将它们排列成一个矩阵,在那里它们与邻居的关系得以保留(即左边,前面等).一个例子看起来像这样:

     P.1 P.2 P.3 P.4 P.5
T 1    G   C   C   P   C
T 2    P   C   B   G   C
T 3   SI  SI   C   B   C
T 4   SI  BR  BR  SI  SI
T 5   BR  CL  BR  BR   B
T 6   BR  BR  BR  BR   C
Run Code Online (Sandbox Code Playgroud)

其中P(n)是从左到右穿过河流的横断面上的实际点测量,并且T(n)给出从上游到下游的横断面.如您所见,某些基板类型(特别是基岩,"BR",在此样本中)具有比其他类型更大的相邻贴片.这在生态学上是有意义的,可能不仅仅是样本中BR的百分比.

我的问题是:是否有一种简单的方法来计算彼此相邻的相同类型的基板测量数量?注意,相邻的角也被认为是相邻的.

编辑以下非常有用的评论:

示例输出将是每种类型的补丁的列表,以及每个补丁中的测量数量.它可能看起来像这样:

$BR  
[1] 9  

$B  
[1] 1 1  

$C  
[1] 4 3 1  

$P  
[1] 1 1  

$G  
[1] 1 1  

$SI  
[1] 3 2  
Run Code Online (Sandbox Code Playgroud)

r geospatial dataframe data.table

5
推荐指数
1
解决办法
251
查看次数

在linprog包中设置的R线性编程忽略使用solveLP的约束(小于或等于)

我在linprog R包中使用solveLP来解决一个简单的线性编程问题:

minimize -x1-x2 
subject to 2*x1+x2+x3    =12
           x1+2*x2   +x4 = 9
           x1,x2,x3,x4 >=0
Run Code Online (Sandbox Code Playgroud)

具有双重等价物:

maximize 12*y1+9*y2 
subject to 2*y1+y2 <= -1
           y1+2*y2 <= -1
           y1,y2 <=0
Run Code Online (Sandbox Code Playgroud)

如果我以原始形式陈述问题,我会得到正确的结果(5,2,0,0).但是当以双重形式陈述问题时,前两个约束只会被忽略.我得到的结果(0,0)显然违反了(2*y1 + y2 <= -1且y1 + 2*y2 <= -1),是否有额外的设置或参数我缺少?请查看下面的代码,让我知道您的想法:

require(linprog)
objVec <- c(-1,-1,0,0) 
rhsConstr <- c(12, 9,0,0,0,0) 
Amat <- rbind( c( 2, 1, 1, 0 ),
               c( 1, 2, 0, 1 ),
               c( 1, 0, 0, 0 ),
               c( 0, 1, 0, 0 ),
               c( 0, 0, 1, 0 ),
               c( 0, 0, …
Run Code Online (Sandbox Code Playgroud)

statistics r linear-programming convex-optimization

2
推荐指数
1
解决办法
2050
查看次数

转移到 C++11 时不等式比较结果未使用警告

我刚刚转向 C++11,注意到旧代码上有一些新警告:

ChinaminiC.cpp:70:76: warning: inequality comparison result unused [-Wunused-comparison]
for(std::vector<std::string>::const_iterator cit = _names.begin(); 
    cit != _names.end(), i < _names.size(); 
    cit++, i++)
ChinaminiC.cpp:70:76: note: use '|=' to turn this inequality comparison into an or-assignment
Run Code Online (Sandbox Code Playgroud)

所提到的不等式是来自 的不等式cit != _names.end()。如果这意味着不检查不等式条件,那么这就是一个问题(双重迭代i是为了迭代与 大小相同的参数_names)。给出的建议对我来说似乎偏离主题。C++11 中一个 for 循环中的两次迭代的语法是否已更改?

c++ for-loop c++11

0
推荐指数
1
解决办法
6684
查看次数