标签: sub-array

OCaml阵列切片?

我正在学习OCaml,而我无法发现如何做的一件事就是获取一个数组.例如,如果我想从索引2开始提取3个元素的子数组,我必须这样做:[|array.(2); array.(3); array.(4)|].这很乏味.是否有任何功能可以轻松快速地提供数组切片?如果没有,我将如何为这种行为滚动自己的功能?

非常感谢帮助,谢谢!

arrays ocaml slice sub-array

4
推荐指数
1
解决办法
1174
查看次数

通过在 O(n) 或更短的时间内从列表中的任何索引开始,两只青蛙可以创建的最大距离?

我想知道是否可以在 O(n) 或更短的时间内完成这个挑战。描述如下:

青蛙跳

2 只青蛙可以从给定的 input_array 中的任何索引开始。该函数应该返回这些青蛙可以在它们之间创建的最大可能距离(两者的索引值之间的差异),让它们彼此跳得更远。

青蛙只能跳到更高值的元素或一些相同高度的元素上,它们不能跳过任何元素。

输入:[1, 5, 5, 2, 6]

输出:3。最大距离 3 是通过生成位置 3(0 索引)和左青蛙跳到索引 1 和右青蛙跳到索引 4 来创建的。

len(input_array) 介于 2 和 200 000 之间。数组中的值是介于 1 和 1 000 000 000 之间的整数。

实际上,这里的挑战似乎是找到最长的连续子序列,使其首先不增加,然后不减少(行为的变化点是开始索引)。这似乎是最高和子阵列任务的变体。

我最好的解决方案是 O(n log n) 通过迭代数组中的所有索引并携带一个max_value来检查两只青蛙可以从该迭代的索引跳多远。

这可以在 O(n) 或更少的时间复杂度内完成吗?


[解决] 谢谢大家的回复。这是一次性解决方案的 Python 实现:

def one_pass_solution(array: List[int]) -> int:
    current_peak_index = 0
    previous_peak_index = 0
    repeat_peaks = 0
    max_distance = 0
    is_going_up = False
    for i in range(len(array) - 1):
        this_height, next_height …
Run Code Online (Sandbox Code Playgroud)

python sub-array contiguous

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

检查子数组中的所有项是否都是相同的Ruby

试图检查子阵列中的所有项是否相同.例如,我有一个5x5板,我想知道其中一个数组是否包含所有x's:

board =     [[47, 44, 71, 8, 88],
        ['x', 'x', 'x', 'x', 'x'],
      # [83, 85, 97, 'x', 57],
        [83, 85, 97, 89, 57],
        [25, 31, 96, 68, 51],
        [75, 70, 54, 80, 83]]
Run Code Online (Sandbox Code Playgroud)

我目前有:

def check_x
  board.each do |x|
   return true if x.include?('x')
  end
   return false
end
Run Code Online (Sandbox Code Playgroud)

但这只会检查其中一个整数是否x全部.任何建议将不胜感激.

ruby arrays sub-array

3
推荐指数
1
解决办法
944
查看次数

ruby - 当值更改时将数组拆分为子数组并忽略/删除该值

我想将以下数组拆分为子数组,以便子数组在 1 的开始和结束时开始和结束...

a=[1,1,0,0,1,0,1,1,1]
Run Code Online (Sandbox Code Playgroud)

所以我最终将其作为一个新数组......

=>  [[1,1],[1],[1,1,1]]
Run Code Online (Sandbox Code Playgroud)

有人有什么想法吗...?

ruby arrays split sub-array

3
推荐指数
1
解决办法
1468
查看次数

如何将列表中的两个大元素相加?

我有一个这样的列表:

[1, 2, 5, 2, 7, 3, 9, 5...]
Run Code Online (Sandbox Code Playgroud)

有没有一种有效的方法可以在这里找到2个最大元素的总和:

for i in range():
    for j in range():
Run Code Online (Sandbox Code Playgroud)

我发现了这个:"最大的子阵列问题"

但我还没完全明白它的作用.

python algorithm list sub-array

3
推荐指数
2
解决办法
207
查看次数

使用php从多维数组中获取子数组

我想使用 获取多维数组中的值PHP。我将键传递给函数,如果键包含值(即没有任何数组值),它将返回该值。但如果该键包含一个数组值,它将返回整个子数组。

我正在为此添加一个示例数组。

<?php

// prepare a list of array for category, subcategory etc...

$category = array(
'Account' => array(
    'Show Balance' => array(
        'Recharge' => 2300,
        'Success' => 12000,
        'Failure' => 25000,
    ),
    'Balance History' => 'your balance is very low for last 2 years',
    'Mini Statement' => 'This is your mini statement. You can have a look of your transaction details',
    'Last Transaction' => 25000
), 
'Deposit' => array(
    'Deposit Limit' => 40000,
    'Make Deposit' => …
Run Code Online (Sandbox Code Playgroud)

php extract multidimensional-array sub-array array-key

3
推荐指数
1
解决办法
8052
查看次数

按其子数组的大小对多维数组进行排序

我有这个多维数组:

Array
(
    [0] => Array
        (
        [0] => 2012-02-26 07:15:00
        )
    [1] => Array
        (
            [0] => 2012-02-26 17:45:00
            [1] => 2012-02-26 18:55:00
        )
    [2] => Array
        (
            [0] => 2012-02-26 18:55:00
            [1] => 2012-02-26 17:45:00
        )
    [3] => Array
        (
            [0] => 2012-02-26 18:57:00
            [1] => 2012-02-26 17:45:00
            [2] => 2012-02-26 18:55:00
        )
Run Code Online (Sandbox Code Playgroud)

当我计算子阵列时,我得到1,2,2,3.我怎么能在3,2,2,1中收到它?我需要获得具有最高子阵列计数的最后3个子阵列(DESC,它意味着3,2,2).我怎样才能做到这一点?

php sorting multidimensional-array sub-array

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

过滤数组中的子数组

我一定是疯了。假设我有一个数组数组。我想过滤子数组并最终得到一个过滤子数组的数组。说我的过滤器是“大于 3”。所以

let nested = [[1,2],[3,4],[5,6]]
 // [[],[4][5,6]]
Run Code Online (Sandbox Code Playgroud)

在一些下划线 jiggery-pokery 失败后,我尝试了常规 for 循环。

for (var i = 0; i < nested.length; i++){
  for (var j = 0; j < nested[i].length; j++){
    if (nested[i][j] <= 3){
      (nested[i]).splice(j, 1)
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

但这只会从第一个子数组中删除 1。我原以为 splice 会改变底层数组,并且会更新长度以解决这个问题,但也许不会?或者也许其他的东西完全出错了。可能很明显;没有看到它。任何花哨或简单的帮助都感激地接受。

javascript sub-array

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

在给定数组中找到长度为k的所有连续子阵列的总和

我想找出长度的连续子阵列的所有总和K 的长度给定的数组n因为k < n.例如,让给定的数组为arr[6]={1,2,3,4,5,6}k=3,然后回答(6,9,12,15).它可以获得如下:

(1+2+3)=6,
(2+3+4)=9,
(3+4+5)=12,
(4+5+6)=15.
Run Code Online (Sandbox Code Playgroud)

我试过这个使用长度的滑动窗口k,但它的时间复杂度是O(n).任何解决方案都需要更少的时间,如O(log n).

c c++ algorithm sliding sub-array

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

Ruby - 优雅地展平数组,但不要忽略空子数组

使用.flatten是一个方便的小技巧,可以获取一个子数组并将其转换为单个数组.例如:[[1,3],2,[5,8]].flatten=> [1,3,2,5,8] 你甚至可以包括零[1,[2,nil],3].flatten将导致[1,2,nil,3].

嵌套.map方法时这种方法非常有用,但是如何解释空子数组呢?例如:[1,[2,3],[],4].flatten会返回[1,2,3,4]...但是如果我需要跟踪空子数组,可能会将结果转换为[1,2,3,0,4][1,2,3,nil,4]

有没有优雅的方法来做到这一点?或者我是否需要编写一些方法来迭代每个子数组并逐个检查?

ruby arrays flatten sub-array

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