1281. 整數的各位積和之差
給你一個整數
n
,請你幫忙計算並返回該整數「各位數字之積」與「各位數字之和」的差。
example 1:
輸入:n = 234
輸出:15
解釋:
各位數之積 = 2 * 3 * 4 = 24
各位數之和 = 2 + 3 + 4 = 9
結果 = 24 - 9 = 15
來源:力扣(LeetCode)
這題非常簡單。只要轉換一下字符串就可以做。無非就是遍歷一遍進行累加還有累乘。
/**
* @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
來源:力扣(LeetCode)
這題也不難。因為他給的數據是排序過的,所以只要判斷上一個出現的元素和當前元素是否相等就可以了,當超過長度的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題目加小技巧
給你代碼:小程序內容滾動與導航欄自動高亮聯動