面试算法题
2024-01-09 15:36:41
字节
// 输入'http://www.baidu.com?a=1&b=2&ee=4'
// 输出{a: 1, b: 2, ee: 4}
function decode() {
const url = 'http://www.baidu.com?a=1&b=2&ee=4';
const str = url.substring(url.indexOf('?') + 1).split('&');
let obj = {}
for (const index in str) {
obj[str[index].split('=')[0]] = str[index].split('=')[1];
}
return obj;
}
// 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和 为目标值 target 的那两个整数,并返回它们的数组下标。
// 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
// 你可以按任意顺序返回答案。
// 示例 1:
// 输入:nums = [2, 7, 11, 15], target = 9
// 输出:[0, 1]
// 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。
// 示例 2:
// 输入:nums = [3, 2, 4], target = 6
// 输出:[1, 2]
function fn(lists, num) {
for (let i = 0; i < lists.length; i++) {
for (let j = i + 1; j < lists.length; j++) {
if (num === (lists[i] + lists[j])) {
return [+i, +j];
}
}
}
}
// 深拷贝
function deep(obj) {
if (typeof obj !== 'object' || obj === null) {
return obj;
}
let newObj = Array.isArray(obj) ? [] : {};
for (const key in obj) {
newObj[key] = deep(obj[key]);
}
return newObj;
}
// 输入
const str=`
1 21 3
4 5 6
7 8 9
`;
// 输出
arr=[
['1','21','3'],
['4','5','6'],
['7','8','9']
];
function formattingArr(str) {
const res = str.split('\n').filter(item => item !== '');
let result = [];
for (const index in res) {
const arr = res[index].split(' ').filter(item => item !== '');
result.push(arr);
}
return result;
}
// 有字符串: abc/def/ghi/jkl/mno
// fun(str, 1)
// 输出: abcdef/ghi/jkl/mno
// fun(str, 2)
// 输出: abcdefghi/jkl/mno
const str = 'abc/def/ghi/jkl/mno';
function formattingStr(str, num) {
let result = '';
const strArr = str.split('/');
let res = ''
for (let index = 0; index <= num; index++) {
res += strArr.shift();
}
result = res + strArr.join('/')
return result;
}
formattingStr(str, 1)
// 输入
// [
// { id: 31, value: 'test_31' },
// { id: 32, value: 'test_32' },
// {
// id: 33,
// value: 'test_33',
// children: [
// { id: 331, value: 'test_331' },
// {
// id: 332,
// value: 'test_332',
// children: [
// {id: 3321, value: 'test_3321'},
// {id: 3322, value: 'test_3322'}
// ]
// }
// ]
// }
// ];
// 输出
// [
// { id: 31, value: 'test_31' },
// { id: 32, value: 'test_32' },
// { id: 331, value: 'test_331' },
// {id: 3321, value: 'test_3321'},
// {id: 3322, value: 'test_3322'}
// ];
var result = [];
function flat(list, parentId) {
for (let index = 0; index < list.length; index++) {
if (list[index].hasOwnProperty('children')) {
flat(list[index].children, list[index].id)
}
else if (parentId) {
list[index].parentId = parentId;
result.push(list[index]);
}
else {
list[index].parentId = -1;
result.push(list[index]);
}
}
return result;
}
// 格式化数字: 1234567890 为字符串 '1,234,567,890'
function formattingNumber(str) {
const res = str.split('').reverse();
let arr = [];
for(let i = 0; i < res.length; i++) {
arr.push(res[i]);
if (i % 3 === 2) {
arr.push(',');
}
}
return arr.reverse().join('');
}
// 实现一个 get 函数,get(obj, chain, defaultVal)
// 举例:
// const obj = {
// a: {
// b: [{
// c: 2
// }]
// }
// }
美团
// 输入:url = 'http://www.domain.com/?user=anonymous&id=123&id=456&city=%E5%8C%97%E4%BA%AC&enabled'
// 输出:
// {
// user: 'anonymous',
// id: [123, 456], // 重复出现的 key 要组装成数组,能被转成数字的就转成数字类型
// city: '北京', // 中文需解码
// enabled: true // 未指定值的 key 与约定为 true
// }
输入:nums1 = [1,2,3], nums2 = [2,5,6]
输出:[1,2,2,3,5,6]
函数示范:const merge = function (nums1, nums2) {
// 返回合并后的数组
return result
}
文章来源:https://blog.csdn.net/weixin_49708498/article/details/135098035
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!