您現在的位置是:首頁 > 綜合
給你程式碼:leetcode隨筆
- 由 鯤圭雲計算 發表于 綜合
- 2021-12-21
1312數字是什麼意思
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題目加小技巧
給你程式碼:小程式內容滾動與導航欄自動高亮聯動