javascript

java

python

c#

android

node.js

c++

reactjs

php

html

jquery

css

.net

ios

git

ruby-on-rails

sql

c

string

ruby

算法-時間復雜度和空間復雜度之間的差異?

我已經看到,在大多數情況下,時間復雜度與空間復雜度有關,反之亦然。 例如,在數組遍歷中:

for i=1 to length(v)
    print (v[i])
endfor

在這里很容易看出,算法的時間復雜度為O(n),但在我看來,空間復雜度也是n(也表示為O(n)?)。

我的問題是:算法的時間復雜度可能不同于空間復雜度嗎?

trans by 2020-02-29T17:38:45Z

算法-為數組中大小為k的每個窗口查找最大值

給定大小為n和k的數組,您如何找到大小為k的每個連續子數組的最大值?

例如

arr = 1 5 2 6 3 1 24 7
k = 3
ans = 5 6 6 6 24 24

我正在考慮使用大小為k的數組,并且每個步驟都將最后一個元素逐出,并添加新元素并在其中找到最大值。 導致運行時間為O(nk)。 有一個更好的方法嗎?

trans by 2020-02-20T11:05:28Z

算法-給定兩個數組,找到給出兩個數組之間最接近距離的排列

假設我有兩個長度為A的數組,分別名為BA

這兩個數組包含實數值。我們將兩個數組之間的距離定義為均方距離。

2) )

我想找到A的置換,它將最小距離賦予B。天真的方法是嘗試A的每個排列并記錄最小距離。 但是,此方法的復雜度為O(n!)。

是否有一種算法的復雜度小于O(n!)?

trans by 2020-02-20T09:04:48Z

java-從上而下的2-3-4左傾紅黑樹中刪除需要額外的旋轉嗎?

我一直在實現一個LLRB軟件包,該軟件包應該能夠以Sedgewick描述的自下而上2-3或自上而下的2-3-4這兩種模式中的任何一種進行操作(代碼-改進的代碼,盡管僅處理2- 這里有3棵樹,這要歸功于RS的指針)。

塞奇威克(Sedgewick)為2-3模式提供了非常清晰的樹操作描述,盡管他花了大量時間談論2-3-4模式。 他還展示了插入過程中顏色翻轉順序的簡單改變如何改變樹的行為(在2-3-4的途中拆分或在2-3的途中拆分):

private Node insert(Node h, Key key, Value value)
{
    if (h == null)
        return new Node(key, value);
          
trans by 2020-02-19T19:50:06Z

c ++-用于找到大于或等于給定值的兩個最小冪的算法

這個問題已經在這里有了答案:

  • 四舍五入到2的下一個冪                                     22個答案

我需要找到兩個大于或等于給定值的最小冪。 到目前為止,我有這個:

int value = 3221;           
          
trans by 2020-02-19T19:01:51Z

算法-為什么QuickSort是n log n的直觀解釋?

是否有人能夠對“ QuickSort n log n”的構成給出“普通英語”的直觀但正式的解釋? 根據我的理解,它必須傳遞n個項目,并且它會記錄n次...我不確定如何將它寫成為什么它會記錄n次的記錄。

trans by 2020-02-19T15:16:57Z

鋸齒形掃描N x N數組

我有一個簡單的數組。 數組長度始終具有整數的平方根。 所以16、25、36等

$array = array('1', '2', '3', '4' ... '25');

我要做的是用HTML排列數組,使它看起來像是塊具有均勻邊的塊。

我想要做的是對元素進行排序,以便當我將JSON編碼的數組傳遞給jQuery時,它將迭代該數組,在當前塊中淡入淡出,從而得到一種wave動畫。 所以我想像這樣對數組進行排序

所以我的排序數組看起來像

$sorted = array('1', '6', '2', '3', '7', '11', '16, '12' .. '25');

有辦法嗎?..謝謝

trans by 2020-02-19T04:21:41Z

r-更快的加權采樣,無需更換

這個問題導致了一個新的R包:random.c

R的默認采樣而不使用random.c進行替換似乎需要二次運行時間,例如 使用從均勻分布得出的權重時。 對于大樣本量,這很慢。 有人知道R中可以使用的更快的實現嗎? 兩個選項是“帶替換的拒絕采樣”(請參閱stats.sx上的此問題)和Wong和Easton(1980)的算法(在StackOverflow答案中使用Python實現)。

感謝Ben Bolker提示了C函數,該函數在使用replace=F和非均勻權重調用2375476319261492225調用random.c時在內部調用了該代碼。的確,該代碼顯示了兩個嵌套的for循環(random.c)的第420 ff行)。

以下是根據經驗分析運行時間的代碼:

library(plyr)
sample.int.test <- function(n, p) {
    sample.int(2 * n, n, replace=F, prob=p); NULL }
times <- ldply(
  1:7,
  function(i) {
    n <- 1024 * (2 ** i)
    p <- runif(2 * n)
    data.frame(
      n=n,
      user=system.time(sample.int.test(n, p), gcFirst=T)['user.self'])
  },
  .progress='text'
)
times
library(ggplot2)
ggplot(times, aes(x=n, y=user/n)) + geom_point() + scale_x_log10() +
  ylab('Time per unit (s)')
# Output:
       n   user
1   2048  0.008
2   4096  0.028
3   8192  0.100
4  16384  0.408
5  32768  1.645
6  65536  6.604
7 131072 26.558

Plot

編輯:感謝Arun指出未加權采樣似乎沒有這種性能損失。

trans by 2020-02-18T20:28:21Z

算法-指向一些不錯的SVM教程的指針

我一直在嘗試掌握支持向量機的基礎知識,并下載并閱讀了許多在線文章。 但是仍然無法掌握它。

我想知道,是否有一些

  • 不錯的教程
  • 示例代碼可用于理解

或您可以想到的東西,這將使我能夠輕松學習SVM基礎知識。

PS:我以某種方式設法學習了PCA(主成分分析)。順便說一句,你們會猜到我正在從事機器學習。

trans by 2020-02-18T17:47:43Z

算法-面試問題:三個數組和O(N * N)

假設我們有三個長度為N的數組,其中包含long類型的任意數字。然后給我們一個數字M(相同類型),我們的任務是從每個數組中選擇三個數字A,B和C(換句話說, 應該從第一個數組中選擇A,從第二個數組中選擇B,從第三個數組中選擇C),因此總和A + B + C = M.

問題:我們可以選擇所有三個數字并得出O(N2)的時間復雜度嗎?


插圖:

數組是:

1) 6 5 8 3 9 2
2) 1 9 0 4 6 4
3) 7 8 1 5 4 3

我們得到的M是19那么我們的選擇是從第一開始為8,從第二開始為4,從第三開始為7。

trans by 2020-02-18T16:20:03Z

什么是的自動完成/建議算法,數據結構[C ++ / C]

當用戶鍵入字符時,我們看到Google,Firefox的一些AJAX頁面顯示了可能的項目列表。

有人可以為實現自動完成功能提供良好的算法和數據結構嗎?

trans by 2020-02-18T13:53:20Z

algorithm-O(polylog(n))是什么意思? 特別是,polylog(n)是如何定義的?

簡要:
當學術(計算機科學)論文說“ O(polylog(n))”時可以领救济金的游戏,它們是什么意思? 我對我非常熟悉的“ Big-Oh”表示法并不感到困惑,而是對函數polylog(n)感到困惑。 我不是在說復雜的分析函數Lis(Z)。 還是他們? 可能完全不同嗎?

更多詳情:
主要出于個人利益,我最近一直在瀏覽有關壓縮后綴數組的各種論文,例如 向后搜索的優勢-高效的輔助內存和壓縮后綴數組的分布式實現。 陳述的計算復雜性估計有時涉及polylog(n),這是我不熟悉的功能。

維基百科給出了polylogs(z)的定義,該定義似乎主要是關于復雜分析和解析數論的。 我的懷疑是,它與壓縮文件中的polylog(n)無關,盡管我很樂意聽取其他更博學的人的意見。 如果是這種情況,為什么省略下標確實是合理的呢?

我唯一的其他猜測是,也許O(polylog(n))的意思是“漸近到log(n)的多項式函數”。 但這只是一個猜測:我沒有任何證據,這會導致啟動符號的濫用。

無論如何,將不勝感激地鏈接到一個權威的定義!


如何按值對STL映射排序?

如何實現STL映射按值排序?

例如,我有一張地圖m

map<int, int> m;
m[1] = 10;
m[2] = 5;
m[4] = 6;
m[6] = 1;

我想按m的值對該地圖進行排序。 因此,如果我打印地圖,則希望得到如下結果:

m[6] = 1
m[2] = 5
m[4] = 6
m[1] = 10

如何以這種方式對地圖排序? 有什么方法可以處理具有排序值的鍵和值?

trans by 2020-02-18T06:04:10Z

算法-如何檢查整數是否為3的冪?

我看到了這個問題,并彈出了這個想法。

trans by 2020-02-17T07:09:51Z

算法-為什么Python的itertools.permutations包含重復項? (當原始列表重復時)

普遍同意,n個不同符號的列表具有n! 排列。 但是,當符號沒有區別時可以领救济金的游戏,在數學和其他方面,最常見的約定似乎只是計算不同的排列。 因此,列表next_permutation的排列通常被認為是
[1, 1, 2], [1, 2, 1], [2, 1, 1].實際上,以下C ++代碼精確地打印了這三個代碼:

int a[] = {1, 1, 2};
do {
    cout<<a[0]<<" "<<a[1]<<" "<<a[2]<<endl;
} while(next_permutation(a,a+3));

另一方面,Python的next_permutation似乎還打印了其他內容:

import itertools
for a in itertools.permutations([1, 1, 2]):
    print a

此打印

(1, 1, 2)
(1, 2, 1)
(1, 1, 2)
(1, 2, 1)
(2, 1, 1)
(2, 1, 1)

正如用戶Artsiom Rudzenka在一個答案中指出的那樣,Python文檔如此指出:

元素根據其位置而不是其價值被視為唯一。

我的問題:為什么要做出此設計決定?

似乎遵循通常的約定會給出更有用的結果(實際上,這通常正是我想要的)……或者我缺少一些Python行為的應用程序?

[還是一些實施問題? next_permutation中的算法(例如,在此處由我在StackOverflow上進行了解釋,并在此處顯示為O(1)攤銷的)在Python中似乎高效且可實現,但由于Python不能保證字典順序,因此它的工作效率更高。 基于價值? 如果是這樣,效率的提高是否值得?

trans by 2020-02-15T20:03:27Z

算法-如何以編程方式確定如何將較小的盒子放入較大的包裝中?

有誰知道現有的軟件或算法來計算包裝多個物品的包裝尺寸?

我的庫存數據庫中有一堆物品,其中定義了長度,寬度和高度尺寸。 給定這些尺寸,我需要計算多少購買的物品將適合預定義的盒子尺寸。

trans by 2020-02-15T05:46:39Z

算法-生成塔防迷宮(壁厚受限的最長迷宮)-接近最優的啟發式算法?

在塔防游戲中,您有一個帶有起點,終點和許多墻的NxM網格。

Image1

敵人從頭到尾都采用最短的路徑,而不會穿過任何墻(它們通常不局限于網格,但為簡單起見,假設它們是柵格。在兩種情況下,它們都不能穿過對角的“孔”)

Image2

問題(至少對于這個問題而言)是要放置多達K個額外的墻,以使敵人必須走的路最大化。 例如,對于K = 14

Image3

我的直覺告訴我,如果我們將其概括為包括在到達終點之前必須訪問的航路點,并且可能也沒有航路點,那么這個問題是NP難題的。

但是,對于最佳解決方案,是否有任何體面的啟發式方法?


[編輯]我在這里發布了一個相關的問題。

trans by 2020-02-14T22:17:01Z

算法-Windows資源管理器使用的排序順序中的第一個字符是什么?

例如,在Windows文件夾中,如果我們創建一些文件并將其命名為1.html,2.txt,3.txt,photo.jpg,zen.png,則順序將保持不變。 但是,如果我們創建另一個名為_file.doc的文件,它將被放置在頂部。 (考慮到我們按名稱降序排列)

同樣,將被視為第一個字符的字符是什么,以便如果我使用該字符,它將把文件放在層次結構的頂部?


算法-使用PHP關聯數組查找笛卡爾積

假設我有一個如下數組:

Array
(
    [arm] => Array
        (
            [0] => A
            [1] => B
            [2] => C
        )
    [gender] => Array
        (
            [0] => Female
            [1] => Male
        )
    [location] => Array
        (
            [0] => Vancouver
            [1] => Calgary
        )
)

如何在保留外部關聯數組的鍵并將其用于內部鍵的同時找到笛卡爾乘積? 該算法的結果應為:

Array
(
    [0] => Array
        (
            [arm] => A
            [gender] => Female
            [location] => Vancouver
        )
    [1] => Array
        (
            [arm] => A
            [gender] => Female
            [location] => Calgary
        )
    [2] => Array
        (
            [arm] => A
            [gender] => Male
            [location] => Vancouver
        )
...etc.

我查找了許多笛卡爾乘積算法,但是我對如何保留關聯鍵的細節感到困惑。 我正在使用的當前算法僅給出數字索引:

    $result = array();
    foreach ($map as $a) {
        if (empty($result)) {
            $result = $a;
            continue;
        }
        $res = array();
        foreach ($result as $r) {
            foreach ($a as $v) {
                $res[] = array_merge((array)$r, (array)$v);
            }
        }
        $result = $res;
    }
    print_r($result);

任何幫助,將不勝感激。

trans by 2020-02-12T20:31:45Z

php-對齊字符串算法

剛剛進行了一次面試,我被要求使用以下簽名實現功能:

function justify($str_in, $desired_length)

它需要模仿HTML文本對齊方式:justify會做的,這是一些示例(期望的長度= 48)


(我用句號代替了空格以說明問題)

單詞之間的空格長度不得相差超過一個。

我已經寫了一個PHP解決方案,但是我對人們可以提出什么樣的算法來解決問題更感興趣。 這是有史以來我在工作面試中遇到的第一個白板問題,我擔心多種因素使我的工作時間超出了我應有的時間。

trans by 2020-02-12T18:06:23Z

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 下一頁 共28頁