zoukankan      html  css  js  c++  java
  • 算法相关的复习记录-持续更新

    一: 数组去重

    var arr=['12','32','89','12','12','78','12','32'];

        // 最简单数组去重法,使用indexof()

        function unique1(array){

            var n = []; //一个新的临时数组

            for(var i = 0; i < array.length; i++){ //遍历当前数组

                if (n.indexOf(array[i]) == -1)

                    n.push(array[i]);

            }

            return n;

        }

        arr=unique1(arr);

    二:冒泡排序

      var arr = [29,45,51,68,72,97];

      //外层循环,控制趟数,每一次找到一个最大值

      for (var i = 0; i < arr.length - 1; i++) {

        // 内层循环,控制比较的次数,并且判断两个数的大小

        for (var j = 0; j < arr.length - 1 - i; j++) {

          // 白话解释:如果前面的数大,放到后面(当然是从小到大的冒泡排序)

          if (arr[j] > arr[j + 1]) {

            var temp = arr[j];

            arr[j] = arr[j + 1];

            arr[j + 1] = temp;

          }

        }

      }

    三:计算数组各项重复的次数

    var arr=['胡将','胡将','hujiang','胡将','胡江','hujiang'];

    var obj={};

    arr.sort();    //先排序

    for(var i=0;i<arr.length;){

        var con=0;

        for(var j=i;j<arr.length;j++){

            if(arr[i]===arr[j]){

                con++

            }

        }

        obj[arr[i]]=con;

        i=i+con;    //跳过重复的值

    }

    console.log(obj);  //{ hujiang: 2, '胡将': 3, '胡江': 1 }

    四:ES6的SET使用

      add: 添加某个值。 ckear 清空 。delete。 foreach 遍历。 has ,返回布尔,是否存在

      数组去重  var arr = [1,2,3,3,1,4]; [...new Set(arr)]; // [1, 2, 3, 4]

      并集var a = new Set([1, 2, 3]); var b = new Set([4, 3, 2]); var union = new Set([...a, ...b]); // {1, 2, 3, 4}

      交集var a = new Set([1, 2, 3]); var b = new Set([4, 3, 2]); var intersect = new Set([...a].filter(x => b.has(x))); // {2, 3}

      差集 var a = new Set([1, 2, 3]); var b = new Set([4, 3, 2]);

      var diffA = new Set([...a].filter(x => !b.has(x))); // {1}

      var diffB = new Set([...b].filter(x => !a.has(x)));  

      var diffAll = new Set(...diffA,...diffB)

    五:纯js实现点击一个圆

      |AB|=Math.abs(Math.sqrt(Math.pow(X2-X1),2)+Math.pow(Y2-Y1,2)))

      Math.abs()求绝对值

      Math.pow(底数,指数)

      Math.sqrt()求平方根  

      document.οnclick=function(e){

      var r=50;//圆的半径

      var x1=100,y1=100,x2= e.clientX;y2= e.clientY;

      //计算鼠标点的位置与圆心的距离

      //直角三角形a² * b² = c²

      var len=Math.abs(Math.sqrt(Math.pow(x2-x1,2)+Math.pow(y2-y1,2)));

      if(len<=50){console.log("内")}else{console.log("外")}

  • 相关阅读:
    Golang 函数,我觉得比较有意思的几个东西
    Golang 基础
    JVM快速扫盲篇
    好用的Scrum (敏捷开发)工具有哪些?推荐三个顶级的Scrum 管理工具
    一篇文章帮助你理解跑马灯的滚动原理
    如何来理解Python中的字典数据类型
    一篇文章带你了解HTML的网页布局结构
    通过webgoat-xxe、jwt学习Java代码审计
    DNS隧道
    KTL 一个支持C++14编辑公式的K线技术工具平台
  • 原文地址:https://www.cnblogs.com/yasoPeng/p/12802067.html
Copyright © 2011-2022 走看看