ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

自己捋的常见算法

2021-10-19 16:04:05  阅读:107  来源: 互联网

标签:arr log ++ 常见 自己 算法 let var length


1.打印图形
// // 三角形打印
function log(n){
  for(var i = 1; i <= n; i ++){
		for(var j = 0; j < n - i; j ++){//循环使前边空格产生
				document.write("&nbsp;&nbsp;");
			}
		for(var k = 0; k < i; k ++){//使星星产生
			document.write("&nbsp;*&nbsp;");
		}
		document.write("<br>");
	}
}
log(5);

// 倒三角打印
function log(n) {
  for(var i = 1; i <= n; i ++) {
    for(var k = 0; k < i; k ++) {
      document.write("&nbsp;&nbsp;");
    }
    
    for(var j = n; j >= i; j --) {
      document.write("&nbsp;*&nbsp;");
    }
    document.write("<br>");
  }
}

log(5);
2.数组去重
// 方法一
function remote_Repeat1(arr) {
  let newArr = [];
  for(let i = 0; i < arr.length; i++) {
    if(!newArr.includes(arr[i])) {
      newArr.push(arr[i]);
    }
  }
  return newArr;
}
var test1 = [1, 2, 3, 4, 4, 4,5,5,5,5];
console.log(remote_Repeat1(test));

// 方法二
function remote_Repeat2(arr) {
  for(let i = 0; i < arr.length; i ++) {
    let item = arr[i];
    for(let j = i + 1; j < arr.length; j ++) {
      let compare = arr[j];
      if(item === compare) {
        arr.splice(j, 1);
        j --;
      }
    }
  }
  return arr;
}
var test2 = [1, 2, 3, 4, 4, 4,5,5,5,5];
console.log(remote_Repeat2(test));
3.不借助变量实现转
function swap(a, b) {//a = b - (b - a)
  b = b - a;//6-2
  a = a + b;//2+4
  b = a - b;//6-4

  return [a, b];
}

let c = swap(2, 6);
console.log(c);
4.随机生成指定长度的字符串
function randomString(str, n) {
  let l = str.length;
  let temp = '';
  for(var i = 0; i < n; i ++) {
    temp += str.charAt(Math.floor(Math.random() * l));
  }
  return temp;
}

let test = randomString('gfuyeiwaufewujflehiuw4a98r7878t79', 9);
console.log(test);
5.找出数组最大差的值
function getMaxProfit(arr) {
  var min = arr[0]; //最小值
  var max = 0; //最大值

  for (var i = 0; i < arr.length; i++) { 
    var current = arr[i]; 
    minD = Math.min(min, current); 
    var d_value = current - minD; 
    maxD = Math.max(max, d_value); 
  } 
  return maxD; 
} 

var a = getMaxProfit([1, 2, 4, 6, 78, 987]);
console.log(a);
6.字符串个数
var str = 'asdfssaaasasasasaa';
var json = {};
for (var i = 0; i < str.length; i++) {
    if(!json[str.charAt(i)]) {
       json[str.charAt(i)] = 1;
    }else{
       json[str.charAt(i)]++;
    }
};
console.log(json);

var iMax = 0;
var iIndex = '';
for(var i in json){
  if(json[i]>iMax){
    iMax = json[i];
    iIndex = i;
    }
}        

console.log('出现次数最多的是:'+iIndex+'出现'+iMax+'次');

7.最大值
function sort_Max (str1, str2) {
  return str1 + str2 > str2 + str1;
}

function solve(nums) {
  let arr = [];
  for(var i = 0; i < nums.length; i ++) {
    arr += nums[i].toString();
  }

  arr.sort_Max();
  if(arr[0] == "0") return "0";
  
  let res = "";
  for(var i = 0; i < arr.length; i ++) {
    res += arr[i];
  }
  return res;  
}

let a = solve([1, 23, 43, 545, 7]);
console.log(a);
8.去除两端空格
function test(str){
  let first = 0;
  let last = 0;
  let strlength = str.length;
  for(let i=0; i<strlength; i++){
      if(str[i] !== ' ') {
          first = i;
          break;
      };
  }
  for(let j = strlength - 1; j >= 0; j --){
      if(str[j] !== ' ') {
          last = j;
         break;
      }
  }
  console.log(first, last);

  return str.slice(first, last+1);
}
let testStr = ' jjkfadf  dfj  ';
console.log(test(testStr));

9.反转单向列表
var reverseList = function(head) {
  // 判断下变量边界问题
  if (!head || !head.next) return head;
  // 初始设置为空,因为第一个节点反转后就是尾部,尾部节点指向 null

  let pre = null;
  let current = head;
  let next;
  
  // 判断当前节点是否为空
  // 不为空就先获取当前节点的下一节点
  // 然后把当前节点的 next 设为上一个节点
  // 然后把 current 设为下一个节点,pre 设为当前节点
  while(current) {
    next = current.next;
    current.next = pre;
    pre = current;
    current = next;
 }
  return pre;
};

10.洗牌算法
function shuffleSelf(array, size) {
  var index = -1,
      length = array.length,
      lastIndex = length - 1;

  size = size === undefined ? length : size;
  while (++index < size) {
      // var rand = baseRandom(index, lastIndex),
      var rand = index + Math.floor( Math.random() * (lastIndex - index + 1))
          value = array[rand];

      array[rand] = array[index];

      array[index] = value;
  }
  array.length = size;
  return array;
}

console.log(shuffleSelf([1,12,3,4,5,6,7,8]));

标签:arr,log,++,常见,自己,算法,let,var,length
来源: https://blog.csdn.net/weixin_43822787/article/details/120847962

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有