您現在的位置是:首頁 > 綜合

給你程式碼:leetcode隨筆

  • 由 鯤圭雲計算 發表于 綜合
  • 2021-12-21
簡介length4) {return arr[i]}} else {count = 1

1312數字是什麼意思

給你程式碼:leetcode隨筆

1281。 整數的各位積和之差

給你一個整數

n

,請你幫忙計算並返回該整數「各位數字之積」與「各位數字之和」的差。

example 1:

輸入:n = 234

輸出:15

解釋:

各位數之積 = 2 * 3 * 4 = 24

各位數之和 = 2 + 3 + 4 = 9

結果 = 24 - 9 = 15

這題非常簡單。只要轉換一下字串就可以做。無非就是遍歷一遍進行累加還有累乘。

/**

* @param {number} n

* @return {number} */

var subtractProductAndSum = function(n) {

const N = String(n);

let sum = 0;

let reduce = 1;

for (let i = 0; i < N。length; i++) {

sum += Number(N[i]);

reduce *= Number(N[i]);

}

return reduce - sum;

};

1287。 有序陣列中出現次數超過25%的元素

給你一個非遞減的 有序 整數陣列,已知這個陣列中恰好有一個整數,它的出現次數超過陣列元素總數的 25%。

請你找到並返回這個整數

example 1 :

輸入:arr =[1,2,2,6,6,6,6,7,10]輸出:6

這題也不難。因為他給的資料是排序過的,所以只要判斷上一個出現的元素和當前元素是否相等就可以了,當超過長度的1/4跳出迴圈就可以了,當上一個元素和當前元素不相等並且迴圈還沒跳出,把計數器還原為1從頭開始計時。值得注意的是,不要忘了只有一個元素這個情況。

/**

* @param {number[]} arr

* @return {number}

*/

var findSpecialInteger = function(arr) {

let last = arr[0], count = 1;

if (arr。length === 1) {

return last;

}

for (let i = 1; i < arr。length; i++) {

if (last === arr[i]) {

count += 1;

if (count > arr。length/4) {

return arr[i]

}

} else {

count = 1;

}

last = arr[i];

}

};

小程式元件Behavior屬性覆蓋舉例

根據微信官方文件,欄位覆蓋是有一定規則的。

根據官方文件如果是proerties屬性或者方法,那麼元件之中的會覆蓋Behavior中的,Bahavior自身中的則是後面的覆蓋前面的。

而如果是資料data,目標是物件是會被合併,其他型別就會相互覆蓋。

好了看到這,我就鬱悶了,這所謂的相互覆蓋是什麼意思?

我就舉個例子吧

//如下有一個Behavior

module。exports = Behavior({

properties: {

abc: {

type: Array,

value: [1]

}

},

data: {

cba: [‘ch’],

cbaO: { a : 1 },

}

})

//如下有個元件應用了這個Behavior

Component({

behaviors: [。。。],

/**

* 元件的初始資料

*/

data: {

cba: { y: 2 }, // 測試 [‘ch2’], 1, ‘1312’

cbaO: { b: 1 }

},

attached: function () {

//列印變數

}

})

可以看出:元件cbaO和behavior cbaO是會被合併,就是類似Object。assign。嗯,表現正常。

而cba則會變成 behavior裡面的東西。如果元件裡面的 cba變成[‘ch2’],則又會變成元件裡的東西,我如果換成字串或者數字,依舊是元件裡的data覆蓋behavior裡面的data。我又測試瞭如果Behavior裡面的data是物件的情況,情況也一樣。

得出結論:所謂的相互覆蓋,就是有一個如果是物件,則會被另一個代替掉。如果2個都不是物件,那麼按元件的來。

我後來又新建一個元件也應用了這個Behavior,發現如果元件的data欄位裡有一個物件也叫cbaO,那麼他們會共享這個屬性,也就是說即使這樣

cbaO:{}

像這給出一個空物件,他列印的就是之前那個元件一樣的cbaO,可以說變數被汙染了,當然這個物件裡面如果有同名的鍵名則會優先本元件。

這應該是微信方面的bug,從他們的設計角度,元件裡的behavior是和元件裡的data共享的。但是不同元件例項引用同一個behavior,bahavior裡面的data是不能在幾個不同的元件之間共享的。

給你程式碼往期回顧:

暴走狀態!小程式使用者UnionID的獲取及登入狀態維護——給你程式碼

給你程式碼:leetcode題目加小技巧

給你程式碼:小程式內容滾動與導航欄自動高亮聯動

Top