给定一个Array arr [] = {4,6,8,3,6}数组的所有元素之和= 27.现在,让我们对数组执行一个操作: -
对于所有i <length(arr)-1,arr [i] = arr [i] -arr [i + 1]
所以现在数组变为{-2,-2,5,-3},数组的所有元素的总和= -2
我们再次执行相同的操作,数组变为{0,7,-8},数组的所有元素的总和= 1
因此,我们看到: -
第0次迭代后,arr [] = {4,6,8,3,6}.数组的所有元素的总和= 27
第一次迭代后,arr [] = { - 2,-2,5,-3}.数组的所有元素的总和= -2
第二次迭代后,arr [] = {0,-7,8}.数组的所有元素的总和= 1
第3次迭代后,arr [] = {7,-15}.数组的所有元素的总和= -8
给定整数N,问题是在第N次迭代后确定数组的所有元素的总和.
我已成功尝试过蛮力方法,显然时间复杂度是二次方的.我正在寻找一种具有更好时间复杂度的方法,如果可能的话,最好是线性的.
目前我有一些看起来像这样的多维数组
Array (
[71] => Array ( [author] => 2 [date] => 1392867376 )
[49] => Array ( [author] => 2 [date] => 1392868188 )
[75] => Array ( [author] => 14 [date] => 1392867388)
[67] => Array ( [author] => 2 [date] => 1392870805 )
)
Run Code Online (Sandbox Code Playgroud)
我想按"约会"对它们进行排序,但我不知道如何.我试过这个:
function cmp($a, $b) {
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}
uasort($visited, 'cmp');
Run Code Online (Sandbox Code Playgroud)
但由于我不知道,也找不到如何使用"比较功能"的参考,我在太空中.我所能找到的只是非常模糊的东西.目前这个由"作者"排序.
有人可以向我解释这些比较函数是如何工作的(或指向我的在线资源)并告诉我需要做什么来按"日期"对这个数组进行排序 - 同时保持所有密钥完好无损(密钥不得更改或删除)
非常感谢您提供的任何帮助.
PS:我尝试过array_multisort - 它擦除了我的密钥.
我有简单的数组
$a = ['a', '', 'b','c','d'];
Run Code Online (Sandbox Code Playgroud)
如果我对它进行 json_encode,我就会得到
["a","","b","c","d"]
Run Code Online (Sandbox Code Playgroud)
但是如果我尝试使用array_filter或array_diff删除空值
我会有
{"0":"a","2":"b","3":"c","4":"d"}
Run Code Online (Sandbox Code Playgroud)
但我不需要对数组键进行编码,我需要一个没有空元素且没有数组键的编码数组,如何解决?
PHP沙箱示例:http://sandbox.onlinephpfunctions.com/code/91635a5df7fcd954dd64fe92089f2beadc81c3c4
我有一个一维数组,可以这样说:
import numpy as np
inp_vec = np.array([1, 2, 3])
Run Code Online (Sandbox Code Playgroud)
现在,我想构造一个形式的矩阵
m = [[0, 1-2, 1-3], [2-1, 0, 2-3], [3-1, 3-2, 0]]
Run Code Online (Sandbox Code Playgroud)
当然,可以使用for循环来完成此操作,但是有没有更优雅的方法呢?
这将是一个相当简单的问题,我想知道在Python中是否有一个快速而干净的解决方法.
假设我有一个nd-array定义如下:
In [10]: C = np.random.rand(2,3,3)
In [11]: C
Out[11]:
array([[[ 0.43588471, 0.06600133, 0.81145749],
[ 0.20270693, 0.85879686, 0.75778422],
[ 0.68253449, 0.98287412, 0.63804605]],
[[ 0.61591433, 0.36453861, 0.23798795],
[ 0.26761896, 0.00657165, 0.04083067],
[ 0.11177481, 0.55245769, 0.97274592]]])
Run Code Online (Sandbox Code Playgroud)
然后我计算第三维数组中值和前一个值之间的差异,如下所示:
In [12]: C[:, :, 1:] = C[:, :, 1:] - C[:, :, 0:C.shape[2]-1]
In [13]: C
Out[13]:
array([[[ 0.43588471, -0.36988337, 0.74545616],
[ 0.20270693, 0.65608994, -0.10101264],
[ 0.68253449, 0.30033963, -0.34482807]],
[[ 0.61591433, -0.25137572, -0.12655065],
[ 0.26761896, -0.26104731, 0.03425902],
[ 0.11177481, 0.44068288, 0.42028823]]])
Run Code Online (Sandbox Code Playgroud)
是否可以使用类似的技术回到原始值,还是必须使用for循环和临时变量? …
我正在尝试将两个数组与 array_udiff 进行比较,但它非常奇怪。似乎 array_udiff 没有得到正确的答案。这是现场演示。结果应该是一个空数组,但留下一个未过滤的元素。
<?php
$string = '{
"sakiniai": [
{
"Faktas": "A",
"value": "true"
},
{
"Faktas": "B",
"value": "true"
},
{
"Faktas": "A",
"value": "false"
}
]
}';
$sakiniais = json_decode($string, true)['sakiniai'];
$v = $sakiniais[0];
$arr[] = $v;
$v['value'] = $v['value'] == "true" ? "false" : "true";
$arr[] = $v;
var_dump($arr);
var_dump($sakiniais);
print_r(array_udiff($arr, $sakiniais, function($a, $b){
/*
var_dump($a);
var_dump($b);
var_dump($a == $b);
echo "\n\n\n";
*/
return $a == $b ? 0 : -1;}
));
Run Code Online (Sandbox Code Playgroud)
输出 …
我有这个代码:
$a1 = array(31001);
$a2 = array(31001, 31002);
$diff = array_diff($a1, $a2);
var_dump($diff);
Run Code Online (Sandbox Code Playgroud)
我期待array_diff将array(0 => 31002)根据PHP文档返回:
返回一个数组,其中包含array1中任何其他任何数组中都不存在的条目.
但是发布的代码返回空数组.任何人都可以解释为什么会发生这种情况以及如何获得正确的结果?
这是PHPfiddle的例子.
感谢您提供任何帮助或有用的提示.
我有两个数组,如下所示,
$a =array(1,2,3,4);
$b =array(1,2,5,6);
Run Code Online (Sandbox Code Playgroud)
这是mycode
$c=array_diff($a,$b);
$c=array(3,4,5,6);
Run Code Online (Sandbox Code Playgroud)
但我希望它像下面这样
$c=array(3,4);
Run Code Online (Sandbox Code Playgroud)
注意:
我想要$a数组中不存在的数组值$b.
我需要你们的一点帮助来修复此小代码。我们的想法是删除其内部的任何数字$remove_str从$list_str。如您所见,我已经尝试通过将两个字符串都转换为数组来解决问题,并简单地遍历列表数组以在remove数组中搜索值,如果匹配则将其删除。但是,结果与我预期的完全不同。我一直在玩弄它一段时间,但是我的头在转动,以至于无法找到解决方案。
<?php
$remove_str = '5,6,8,56,195';
$list_str = '1,3,6,9,34,150,195,213';
$remove_arr = explode(',', $remove_str);
$list_arr = explode(',', $list_str);
foreach($list_arr as $value){
$position = array_search($value, $remove_arr);
if($position !== false){
unset($list_arr[$position]);
} else {
continue;
}
}
$result = implode(',', $list_arr);
echo $result;
?>
Run Code Online (Sandbox Code Playgroud)
结果:
1,6,9,150,195,213
预期结果:
1,3,9,34,150,213
我想array_diff()在Laravel中使用两个数组.第一个数组如下所示:
array:4 [
0 => 7248
1 => 7249
2 => 7250
3 => 7251
]
Run Code Online (Sandbox Code Playgroud)
第二个:
array:4 [
0 => "7248"
1 => "7249"
2 => "7250"
3 => "7251"
]
Run Code Online (Sandbox Code Playgroud)
这个我跟上了$request->request->get('ids', []);.
如何将一个数组转换为字符串或整数?由于这些数组可能会变大,我真的不想一次转换一个值.
更新:
array_diff()正在做它的工作,尽管有字符串与整数.
提前致谢!
array-difference ×10
php ×7
arrays ×6
numpy ×2
python ×2
array-filter ×1
difference ×1
elements ×1
json ×1
laravel ×1
sorting ×1
string ×1
sum ×1