/**
* @param {number[]} nums
* @return {number}
*/// 思路// 数组排序 找到中间值val// for遍历数组, 取各个数和中间值的绝对值差之和
var minMoves2 =function(nums){
nums.sort((a, b)=> a - b);
const mid = Math.floor(nums.length /2);
const midValue = nums[mid];
let result =0;for(let ch of nums){
result += Math.abs(ch - midValue);}
console.log(result);return result;};minMoves2([1,2,3]);// 输入:nums = [1,2,3]// 输出:2// 解释:// 只需要两次操作(每次操作指南使一个元素加 1 或减 1):// [1,2,3] => [2,2,3] => [2,2,2]
692.前K个高频单词
/**
* @param {string[]} words
* @param {number} k
* @return {string[]}
*/// 思路// 哈希统计+ sort排序vartopKFrequent=function(words, k){const map ={};for(let ch of words){
map[ch]=(map[ch]??0)+1;}let ans = Object.keys(map).sort((a, b)=>
map[a]=== map[b]?(a > b ?1:-1): map[b]- map[a]);// console.log(ans.slice(0, k));return ans.slice(0, k);};topKFrequent(["i","love","leetcode","i","love","coding"],2);// 输入: words = ["i", "love", "leetcode", "i", "love", "coding"], k = 2// 输出: ["i", "love"]// 解析: "i" 和 "love" 为出现次数最多的两个单词,均为2次。// 注意,按字母顺序 "i" 在 "love" 之前。
686.重复叠加字符串匹配
/**
* @param {string} a
* @param {string} b
* @return {number}
*/// 思路// 把a至少拼接成b的长度 判断有没有包含b// 如果不包含再拼接一次(可能是头尾的关系),判断是否包含, 包含更新结果,不包含返回-1
var repeatedStringMatch =function(a, b){if(!b.length)return0;
let targetStr = a;
let len = b.length;
let result =1;while(targetStr.length < len){
targetStr += a;
result +=1;}if(targetStr.includes(b)){return result;}
targetStr += a;
result +=1;if(targetStr.includes(b)){return result;}else{return-1;}};
console.log(repeatedStringMatch("abcd","cdabcdab"));