把陣列中的某個數字移到陣列最後面,比如[1, 7, 0, 2, 7, 0, 4, 5]
中,把7往後挪,結果為[ 1, 0, 2, 0, 4, 5, 7, 7 ]
利用乙個count計數,看碰到了幾個x。如果碰到的數不是x,那麼就把這個數往前挪count個單位,即
arr[i - count] = arr[i];
,相等count++
下面這張圖是整個移動過程:移動所有0,zeros用來統計碰到有多少個0。
* 所有相同數字後移——假設現在數字為x
//根據這個思想,寫了下面這個**,假設指定數字是x
function
backshift
(arr, x)
else
}//把最後j指向位置一直到陣列最後寫成x
while
(j < len)
console.
log(arr);}
backshift([
1,7,
0,2,
7,0,
4,5]
,7);
然而、大佬的**是這樣的:
//第二種思想的第二種寫法
function
backshift2
(arr, x)
}while
(j < len)
console.
log(arr);}
backshift2([
1,7,
0,2,
7,0,
4,5]
,7);
/*
快速排序:小於基準k的放左邊,大於k的放右邊
這樣跟上面的思想是一樣的。然後用上面這種方式做,稍微改一下
第一段:小於x的;
第二段:大於x的;
第三段: 沒有訪問的;
*/function
partition
(arr,l,
r)}//把鍵值放到j的位置
[arr[r]
, arr[j]]=
[arr[j]
, arr[r]
];return j;
}function
quicksort
(arr,l,
r, str)
}var arr =[7
,3,5
,2,1
,8];
quicksort
(arr,0,
5);console.
log(arr)
;
把boolean 引數放到最後面
每當我看到乙個方法呼叫如下 enum.tryparse stringrepresentationofenum,true,out enumvalue 我就會想這個 true 引數代表的是什麼意思呢。在這個例子中,基於我過去的經驗我知道在這個方法中它代表的是ignorecase 引數。但是,如果這是乙個...
總是把事情拖到最後?教你如何改善自己的拖延症
現實中,都喜歡把自己要做的事情拖到最後再去做,最後導致自己慌忙完成自己的任務,或者導致最後自己的任務無法完成,今天我將結合自己的實際經驗分享幾個如何改善自制力,拒絕拖延症的辦法。拒絕拖延,改變自己的拖延心理 想要改變自己的行為,首先要改變自己的心理,所以我們要警覺如下的拖延心理。等到八點鐘,我就要去...
判讀40億數字中是否有某個數字
網上大部分是使用的bitmap演算法。大體思路是 乙個位元組 byte 在計算機中佔8位 bit 每個位 bit 可以表示乙個數字,1表示含有,0表示不含有。1個32位系統的int型別可以儲存2的32次方個bit位,大約是42億多點。這樣40億需要 40 8 5億位元組,1m 1024kb 1024...