
获得徽章 0
- 忙碌是为了什么呢?为了钱而工作,却没啥时间用赚来的钱享受生活,或者是攒钱为以后吧,或者是要攒钱买房,然后被房子套牢了,更不敢花钱。小人物啊🙆,好想像武侠小说里的主角一样能浪迹天涯。有点丧啊
算了,买到了喜欢的小零食,今日份的小开心
浪起来~1点赞 - 关于接口对接 的思考
建议前端定义一套前端用的数据结构,不要依赖于后端接口返回数据的数据结构。理由如下:
- 后端接口可能在比较迟才能给到,如果依赖于接口返回数据的数据结构,可能导致后续流程阻塞。
- 如果后端接口返回的数据结构变更,只要在将后端接口数据转换为前端用的数据结构的一处地方修改。
- 后端接口返回的数据中可能存在一部分用不到,转换为前端用的数据结构可以将没用的数据丢弃。
- 可以将数据扁平化,比如说一个属性对应到接口返回的数据结构是a.b.c.d,转换为前端用的数据结构可以转换为e。这样每次用到这个属性就方便很多了。展开评论点赞 - 变位词 一种把某个词或句子的字母的位置(顺序)加以改换所形成的新词
function anagram(words) {
const anagramMap = {};
for (const word of words) {
const mark = getWordMark(word);
if (anagramMap[mark]) {
anagramMap[mark].push(word);
} else {
anagramMap[mark] = [word];
}
}
return anagramMap;
}
function getWordMark(word) {
if (!word) {
return '';
}
const charMap = {}
for (const char of word) {
if (charMap[char]) {
charMap[char]++;
} else {
charMap[char] = 1;
}
}
const keys = Object.keys(charMap).sort();
let mark = '';
for (const key of keys) {
mark += key;
const value = charMap[key]
if (value > 1) {
mark += value;
}
}
return mark;
}
anagram(['pots', 'eat', 'stop', 'tops', '好你', 'tea', 'word', 'form', 'from', '你好']);展开赞过评论2 - 0-99已排序的100个数中抽取一个数,找到抽取的数字
二分法实现
function findMissingNumber(arr, max = 99, min = 0) {
// 数组的长度应该等于最大值减最小值
if (arr.length === max - min) {
if (arr[0] !== min) {
return min;
}
if (arr[arr.length - 1] !== max) {
return max;
}
return bisection(arr, 0, arr.length - 1);
}
function bisection(arr, start, end) {
if (start + 1 === end) {
return arr[start] + 1;
}
const middle = getAverageInt(start, end);
if (middle - start < arr[middle] - arr[start]) {
// 数值之差大于下标之差,说明抽取的数字在左半边
return bisection(arr, start, middle);
} else {
return bisection(arr, middle, end);
}
}
function getAverageInt(one, two) {
return ((one + two) / 2) | 0;
}
}展开评论点赞