汉高建设公司网站,青海省建设局网站,站内推广的方式有哪些,page和wordpress❤ leetCode简易题1-两数之和、简易题14- 最长公共前缀
1、简易1-两数之和
① 题目要求
数字A B target#xff0c;以target为求和结果#xff0c;找出数组中符合的A、B数字下标。
第一次做的时候完全脑子一片蒙#xff0c;随后认真看了看题目发现是发现找符合target和…❤ leetCode简易题1-两数之和、简易题14- 最长公共前缀
1、简易1-两数之和
① 题目要求
数字A B target以target为求和结果找出数组中符合的A、B数字下标。
第一次做的时候完全脑子一片蒙随后认真看了看题目发现是发现找符合target和的两个数字下标
② 看了题解以后第一次以双层for循环暴力破解题目【复杂度On²】**
var twoSum function (nums, target) {let datas {};for (let i 0; i nums.length; i) {for (let s i 1; s nums.length; s) {if (targetnums[i] nums[s]) {return[i,s];}}}
};var nums [2,7,11,15];
var target 9;
// twoSum([2,7,11,15],13);
输出如下
console.log(twoSum([2,7,11,15],13)); //211 [0,2]
console.log(twoSum([2,7,11,15],22)); //211 [1,3]将判断条件进行改变以后【target-nums[i] nums[s]】 代码进行了优化 简单粗暴2遍for循环逐个遍历判断var twoSum function (nums, target) { let datas {};for (let i 0; i nums.length; i){ for (let s i 1; s nums.length; s) {if (target-nums[i] nums[s]){ return[i,s];} } } };③ 题解二 考虑到哈希表利用总和减去其中一个数判断另外一个数是否存在存在返回进去的数字下标和差值数字的下标不存在则记录当前减去数字的下标方便函数下次继续判断和使用【复杂度On1】** isNaN(6) true
var twoSum function(nums, target) {var keys {};for(var i 0;i nums.length; i) {var diff target - nums[i];// 判断差值diff在键值对中是否存在 是则找到匹配数字 数组第二个数字为7下标为1// keys[diff]7,i2 if(!isNaN(keys[diff])) {// 返回减去的数字下标和差值数字的下标return [keys[diff], i];}// 未出现匹配值 将数字存入键值对中以备后续判断// 当前数字假设为第三个 nums[i]7,keys[7]1 i就是判断数字的下标 建立key值 方便下次使用// 若是7的差值不存在当前数字7的下标就是1将1记录为7的下标keys[nums[i]] i;}};2、简易2–回文数判断
① 题目要求判断回文数
给你一个整数 x 如果 x 是一个回文整数返回 true 否则返回 false
回文数是指正序从左向右和倒序从右向左读都是一样的整数。
例如121 是回文而 123 不是。
② 第一种解法-翻转字符串法
题解只有简单的一句
return x.toString()x.toString().split().reverse().join();理解代码 x.toString() x为 123456就是 123456 x.toString().split(‘’) 就是数组 [‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’] reverse()函数颠倒就是 [‘6’, ‘5’, ‘4’, ‘3’, ‘2’, ‘1’] 再用join()函数转化为字符串 就是654321 作用 ————————————————————————————————— toString()方法可以根据所传递的参数把数值转换为对应进制的数字字符串 例如var a 32; console.log(a.toString(2)); //返回字符串100000 console.log(a.toString(4)); //返回字符串200 —————————————————————————————— split()把一个字符串分割成字符串数组 例如 【1】var str“How are you doing today?”; var nstr.split( “); // 此处有空格 n输出的值How,are,you,doing,today? 【2】把空字符串 (”“) 用作 separator那么 stringObject 中的每个字符之间都会被分割 var str“How are you doing today?”; var nstr.split(”); n输出的值H,o,w, ,a,r,e, ,y,o,u, ,d,o,i,n,g, ,t,o,d,a,y,? —————————————————————————— join() 将数组元素转换为字符串 例如【1】 ar fruits [“Banana”, “Orange”, “Apple”, “Mango”]; var energy fruits.join(); 输出的值: Banana,Orange,Apple,Mango 【2】arr.join() // 返回的是⼀个字符串,如果数组为空则返回一个空字符串 var a [‘a’, ‘b’, ‘c’]; var v1 a.join(); // v1的值变为a,b,c var v2 a.join(‘,’); // v2的值变为a,b,c var v3 a.join(‘’); // v3的值变为abd var v4 a.join(‘’); // v4的值变为abc ② 第二种解法-双指针遍历法
Math.floor()返回小于或等于一个给定数字的最大整数*/
如果我们测试的案例是121
var isPalindrome function(x) {var selx.toString();console.log(sel); //121var nMath.floor(sel.length/2); // 1.5取整数为1 console.log(n); //输出1for(var i0;in;i){ console.log(sel[i]); // 121 的第一个位置下标为o的是1 console.log(sel.length-1-i); // 长度3-1-02 i为0小于n为1时候所以此处i为0 console.log(sel[sel.length-1-i]); // 1 //sel[2]1 // 0,1,2 //第三位为1 if(sel[i]!sel[sel.length-1-i]) return false;}return true;
};
最后成功
3、简易题14- 最长公共前缀
① 题目要求
题目如下 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀返回空字符串 “”。 官方给的实例
示例 1
输入strs [flower,flow,flight]
输出fl示例 2
输入strs [dog,racecar,car]
输出
解释输入不存在公共前缀。② 思路分析
分析 取出最长公共前缀那我们就可以直接拿第一个出来然后转为数组然后拿后面的每一个去跟这个第一项作比较看里面的字符是否相同如果后面的字符创长度比这个第一项还短那就可以直接忽略不计。比这个长的话游戏继续。 具体实现 数组为空返回’’ 循环里面的字符串每个的长度 i 循环外层数组长度 s 判断flower 下的f是否和flow 下的f相同 相同 返回l拼接到第一个下面依次 不相同 返回原本的 ③ 解题方法
方式一
//
var longestCommonPrefix function(strs) {if(strs.length0){return };var allstring ;for (var s 0; s strs[0].length; s) {var dataA strs[0][s];for (var m 1; m strs.length; m) {if ( s strs[m].length || strs[m][s] ! strs[0][s]) {return allstring;}allstring strs[0][s];}}return allstring
};输出以后发现虽然貌似没啥毛病但是就是除了问题。
重新分析我们的逻辑可以发现 我依次使用了循环第一个数据字符串长度 ⇒ 整个数组的长度 当第一次能满足条件的时候我把值塞进了allstring里面但是这个时候返回的第一个字母l 实在我循环外层数组的时候也就是重新循环了2次所以返回的ll 所以我的allstring 其实应该放到外层循环的外头即可取循环第一次的其中相同的字符串即可。 完善我们的代码以后
var strs [flower, flow, flight],flower [f, l];function strscommon(strs){if(strs.length0){return };var allstring ;for (var s 0; s strs[0].length; s) {var dataA strs[0][s];for (var m 1; m strs.length; m) {if ( s strs[m].length || strs[m][s] ! strs[0][s]) {return allstring;}}allstring strs[0][s];}
}
console.log(strscommon(strs),strsall);查看我们的输出结果
fl strsall解题完成