Open Zheaoli opened 2 years ago
/*
* @lc app=leetcode id=27 lang=javascript
*
* [27] Remove Element
*/
// @lc code=start
var rmElement = (nums, index) => {
for (let i = index; i < nums.length; i++) {
nums[i] = nums[i + 1];
}
}
/**
* @param {number[]} nums
* @param {number} val
* @return {number}
*/
var removeElement = function(nums, val) {
// let count = 0;
// for (let i = 0; i < nums.length; i++) {
// if (nums[i] === undefined) {
// break;
// }
// if (nums[i] === val) {
// rmElement(nums, i);
// count++;
// i--;
// }
// }
// return nums.length - count;
let pointer = 0;
for (let i = 0; i < nums.length; i++) {
if (nums[i] !== val) {
nums[pointer++] = nums[i];
}
}
return pointer;
};
// @lc code=end
微信id: 弘树 来自 vscode 插件
class Solution {
public String fractionAddition(String expression) {
//因为分母范围为[1,10],分数个数[1,10],故 p= ∏10,i=1 i 一定是所有分母的公倍数
//遍历输入字符串, 对于每个分数,可以分为符号symbol,分子numerator,分母denominator三部分
//则该分数在分母为p时的分子为: symbol * numerator * (p / denominator)
//将所有分子相加,最后对分母p进行化简,即为答案
int p = 1;
for (int i = 2; i <= 10; i++) {
p *= i;
}
//分母为p时的分子
int numerators = 0;
char[] chs = expression.toCharArray();
int n = chs.length;
for (int i = 0; i < n; i++) {
int symbol, numerator, denominator;
int[] arr = new int[3];
//处理首位符号
if (i == 0 && chs[i] != '-') {
symbol = 1;
} else {
symbol = chs[i++] == '-' ? -1 : 1;
}
//处理分子
if (chs[i + 1] == '0') {
numerator = 10;
i += 2;
} else {
numerator = chs[i++] - '0';
}
//处理分母
if (i + 2 < n && chs[i + 2] == '0') {
denominator = 10;
i += 2;
} else {
denominator = chs[++i] - '0';
}
//根据公倍数p计算分子
numerators += symbol * numerator * (p / denominator);
}
StringBuilder sb = new StringBuilder();
if (numerators < 0) {
sb.append('-');
numerators *= -1;
}
//计算分子分母最大公约数,化简分数
int gcd = gcd(p, numerators);
sb.append(numerators / gcd).append('/').append(p / gcd);
return sb.toString();
}
private int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
}
纯纯模拟题 WeChat: Saraad
2022-07-27