简单算法题--每天坚持一点点~
双for循环:
- 里层循环可看做是是外层循环的执行语句
- 外层循环执行一次,里面循环就会执行全部
双for循环的实质
- 外层for循环控制循环的高度(行数);
内层for循环控制循环的宽度(列数);
let nums = [1,2,3];
for(let i = 0; i < nums.length;i++){
console.log(i,'i');
for(let j = i + 1; j < nums.length;j++){
console.log(j,'j')
}
}
结果:
1.求100以内的质数
for(let i = 2; i < 100; i++){
// 假设是质数就为true
let flag = true;
//循环判断该数字是否满足质数条件
for(let j = 2; j < i;j++){
// 如果遇到能被整除的,就代表不是质数,停止这层循环
if(i % j == 0){
flag = false
}
}
if(flag){
// 质数
console.log(i)
}
}
2.整数翻转
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
示例1:
输入:x = 123
输出:321
/**
* @param {number} x
* @return {number}
* 1.先要把输入的数字转变成字符串,然有后字符串变成数组字符串,把这个数组里面内容翻转,然后数组字符串在字符串,
* 2.把每个字符串变成数字
* 3.但是如果有小于0的数字,反转后的数字减2倍就取反了
* 4.大于0还是原来的数字
* Math.pow(底数,几次方)
*/
var reverse = function(x) {
let str = parseInt(String(x).split('').reverse().join(''));
if(str < 0){
str = str - str - str;
}
if(str > Math.pow(-2,31) || str < Math.pow(2,31) - 1){
return 0;
}
return str;
};
3.回文数:
回文:指正读,反读都是一样的。例如:我为人人,人人为我
当然数学中,也有同样的
回文数:设n是任意自然数。若将n的各个数字反向排列所得自然数n1与n相等,则称n是回文数。
例如:1234321;1221(回文数),1234567(不是回文数)
注意:1.小数没有回文数 2.偶数也有回文数(234432)
/**
* @param {number} x
* @return {boolean}
* 1.首先要想到负数没有回文数,小数没有回文数,x已经说明了x是整数
* 2.可以在设置一个x的反转后的数字y
* 3.比较两个变量,如果相等就返回true,否则返回false
*/
var isPalindrome = function(x) {
if(x < 0){
return false
}else{
let y = parseInt(String(x).split('').reverse().join(''))
return x === y ? true : false;
}
}
4.判断字符是否唯一
输入: s = “leetcode”;
输出: false
/**
* @param {string} astr
* @return {boolean}
*/
var isUnique = function(astr) {
// for(let i = 0; i < astr.length;i++){
// for(let j = i + 1; j < astr.length;j++){
// if(astr[i] === astr[j]){
// return false;
// }
// }
// }
// return true;
return new Set(astr).size === astr.length;
};
还没有评论,来说两句吧...