自己捋的常见算法
2021/10/19 17:09:40
本文主要是介绍自己捋的常见算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.打印图形
// // 三角形打印 function log(n){ for(var i = 1; i <= n; i ++){ for(var j = 0; j < n - i; j ++){//循环使前边空格产生 document.write(" "); } for(var k = 0; k < i; k ++){//使星星产生 document.write(" * "); } document.write("<br>"); } } log(5); // 倒三角打印 function log(n) { for(var i = 1; i <= n; i ++) { for(var k = 0; k < i; k ++) { document.write(" "); } for(var j = n; j >= i; j --) { document.write(" * "); } 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]));
这篇关于自己捋的常见算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-30我的第一个Go命令行工具
- 2024-09-30初学者指南:轻松掌握模块化编程
- 2024-09-30顶级5款免费的IntelliJ插件,助你Java开发之路更顺畅
- 2024-09-30提高应用程序可用性:冗余和持久性
- 2024-09-30Twitter 系统设计面试示例
- 2024-09-30JSON对象入门教程:轻松掌握基础用法
- 2024-09-30封装入门:Java面向对象编程的第一步
- 2024-09-30后台交互入门:轻松掌握基础知识与实践技巧
- 2024-09-30轻松入门:后台交互教程详解
- 2024-09-30后台交互项目实战:新手指南