
算法
程序员通通
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【leetcode-102】JavaScript版本 二叉树层序遍历
/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } *//** * @param {TreeNode} root * @return {number[][]} */va...原创 2019-04-15 14:09:07 · 653 阅读 · 1 评论 -
【JavaScript】牛客编程:查找两个节点的最近的一个共同父节点,可以包括节点自身
思路:使用递归的思路往上查找,找到一个节点的父节点,看他是否包含另一个DOM节点function commonParentNode(oNode1, oNode2) { for(; ; oNode1 = oNode1.parentNode) { if(oNode1.contains(oNode2)) { return oNode1 }...原创 2018-10-27 20:53:46 · 986 阅读 · 0 评论 -
【JavaScript】牛客编程:在数组 arr 中,查找值与 item 相等的元素出现的所有位置
function findAllOccurrences(arr, target) { var a = [] arr.forEach(function(item, index) { if(item === target) { a.push(index) } }) return a}function find...原创 2018-10-27 15:03:11 · 782 阅读 · 1 评论 -
【JavaScript】牛客编程:使用闭包实现函数 makeClosures
调用之后满足如下条件:1、返回一个函数数组 result,长度与 arr 相同2、运行 result 中第 i 个函数,即 resulti,结果与 fn(arr[i]) 相同我第一次写法是这样的:function makeClosures(arr, fn) { var result = [] arr.forEach(function(item, index) { ...原创 2018-10-31 20:47:58 · 397 阅读 · 1 评论 -
【JavaScript】牛客编程:实现一个打点计时器
要求1、从 start 到 end(包含 start 和 end),每隔 100 毫秒 console.log 一个数字,每次数字增幅为 12、返回的对象中需要包含一个 cancel 方法,用于停止定时操作3、第一个数需要立即输出function count(start, end) { console.log(start++); var timer = setInte...原创 2018-10-31 19:47:24 · 367 阅读 · 1 评论 -
【JavaScript】牛客编程练习:删除数组最后一个元素
1, 利用slice复制一个新数组function truncate(arr) { var arr1 = arr.slice(0) arr1.pop(arr[arr1.length-1]) return arr1}2, 用filter过滤掉最后一个元素function truncate(arr) { return arr.filter(function(...原创 2018-10-22 22:50:07 · 338 阅读 · 1 评论 -
【JavaScript】牛客编程练习:移除数组 arr 中的所有值与 item 相等的元素。不要直接修改数组 arr,结果返回新的数组
1,function remove(arr, item) { return arr.filter(function(value) { return value !== item })}2,function remove(arr, item) { var a = [] for(var i=0; i<arr.length; i+...原创 2018-10-22 15:51:29 · 3318 阅读 · 1 评论 -
【JavaScript】牛客编程练习:找出元素 item 在给定数组 arr 中的位置
function indexOf(arr, item) { if (Array.prototype.indexOf){ //判断是否支持indexOf方法 return arr.indexOf(item); } else { for (var i = 0; i < arr.length; i++){ if (arr[i] === it...原创 2018-10-22 15:22:01 · 490 阅读 · 0 评论 -
【JavaScript】用JS实现数组累加求和的4种方法
1,function sum(arr) { var s = 0; for (var i=arr.length-1; i>=0; i--) { s += arr[i]; } return s;}2,function sum(arr) { return arr.reduce(function(prev, curr){ ...原创 2018-10-22 15:19:01 · 21274 阅读 · 1 评论 -
【JavaScript】用JavaScript实现一个队列
enqueue() :向队列尾部添加一个(或多个)新的项。dequeue() :移除队列的第一(即排在队列最前面的)项,并返回被移除的元素。front() :返回队列中第一个元素——最先被添加,也将是最先被移除的元素。队列不做任何变动(不移除元素,只返回元素信息——与 Stack 类的 peek 方法非常类似)。isEmpty() :如果队列中不包含任何元素,返回 true ,否则返回 f...原创 2018-10-10 11:03:44 · 532 阅读 · 0 评论 -
【JavaScript】用JavaScript实现一个链表
append(element) :向列表尾部添加一个新的项。insert(position, element) :向列表的特定位置插入一个新的项。indexOf(element) :返回元素在列表中的索引。如果列表中没有该元素则返回 -1 。removeAt(position) :从列表的特定位置移除一项。remove(element) :从列表中移除一项。isEmpty() :如果链表...原创 2018-10-18 21:26:33 · 397 阅读 · 1 评论 -
【JavaScript】牛客编程:给定二进制字符串,将其换算成对应的十进制数字
function base10(str) { var arr = [], result = 0 for(var i = 0; i < str.length; i++) { if(str[i] === '1') { arr.push(1) } else { arr.push(0) }...原创 2018-11-03 20:51:43 · 987 阅读 · 1 评论 -
【JavaScript】牛客编程:将给定数字转换成二进制字符串。如果字符串长度不足 8 位,则在前面补 0 到满8位。
function convertToBinary(num) { var result = [] while(num != 0) { result.push(num % 2) num = Math.floor(num / 2) } result.reverse() while(result.length <...原创 2018-11-03 21:07:21 · 1905 阅读 · 1 评论 -
【JavaScript】牛客编程:获取数字 num 二进制形式第 bit 位的值。注意:
获取数字 num 二进制形式第 bit 位的值。注意:1、bit 从 1 开始2、返回 0 或 13、举例:2 的二进制为 10,第 1 位为 0,第 2 位为 1function valueAtBit(num, bit) { var result = [] while(num != 0) { result.push(num % 2) num...原创 2018-11-02 21:01:34 · 1305 阅读 · 0 评论 -
【leetcode733】JavaScript-图像渲染
var floodFill = function(image, sr, sc, newColor) { let Len1 = image.length, Len2 = image[0].length let dir = [[1, 0], [-1, 0], [0, 1], [0, -1]] let visited = [] let color = image[sr][sc] ...原创 2019-04-15 11:25:29 · 581 阅读 · 1 评论 -
【leetcode 41】JavaScript版-缺失的第一个正数
var firstMissingPositive = function (nums) { nums = selectSort(nums.filter(item => item >= 0)) //吧小于零的数过滤掉,并排序 if (!nums.length) return 1 for (let i = 0; i < nums.length; i++) { if ...原创 2019-04-09 11:28:30 · 365 阅读 · 0 评论 -
【leetcode922】JavaScript版 按奇偶排序数组 II
var sortArrayByParityII = function (arr) { arr = quickSort(arr, 0, arr.length-1) let result = [], m = 0, n = 1 for(var i = 0; i < arr.length; i++) { if(arr[i] % 2 === 0) { //偶数 res...原创 2019-04-09 10:28:43 · 266 阅读 · 0 评论 -
【leetcode215】JavaScript版 数组中的第K个最大元素
var findKthLargest = function(nums, k) { nums = quickSort(nums, 0, nums.length-1) console.log(nums[k-1]) return nums[k-1]};function quickSort(arr, left, right) { let index index = pa...原创 2019-04-09 10:26:25 · 826 阅读 · 1 评论 -
【leetcode101】 JavaScript-对称二叉树
/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } *//** * @param {TreeNode} root * @return {boolean} */var i...原创 2019-04-15 18:07:43 · 492 阅读 · 1 评论 -
【JavaScript】leetcode89,格林编码
思路:利用格林编码的对称性/** * @param {number} n * @return {number[]} */var grayCode = function(n) { function getCode(n) { if(n === 0) { return ['0'] } if(n === 1) { return ['0', ...原创 2019-03-29 11:49:08 · 478 阅读 · 1 评论 -
【JavaScript】leetcode605,种花问题
var canPlaceFlowers = function(flowerbed, n) { var count = 0 for(var i = 0; i < flowerbed.length; i++) { if(flowerbed[i-1] !== 1 && flowerbed[i] === 0 && flowerbed[i+1] !== ...原创 2019-03-29 10:29:37 · 384 阅读 · 0 评论 -
【leetcode】电话号码组合(JavaScript版)
function fn(digits) { let hash = { 2: 'abc', 3: 'def', 4: 'ghi', 5: 'jkl', 6: 'mno', 7: 'pqrs', 8: 'tuv', 9: 'wxyz', } let a = [] digits.split('').forEach(item ...原创 2019-03-26 14:45:33 · 308 阅读 · 0 评论 -
【JavaScript】给定一个字符串,请统计字符串中出现最多的字母和次数
//给定一个字符串,请统计字符串中出现最多的字母和次数function fn(str) { var hash = {} for(let i = 0; i < str.length; i++) { if(hash[str[i]]) { hash[str[i]]++ } else { hash[str[i]] = 1 } } le...原创 2019-03-20 20:23:34 · 1587 阅读 · 0 评论 -
【JavaScript】leetcode:removeElement 移除元素
/*移除元素给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中...原创 2018-11-23 20:24:07 · 545 阅读 · 0 评论 -
【JavaScript】leetcode算法:moveZeroes 移动零
/*移动零给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。*/var moveZeroes2 = function(nums) {var len = nums.lengthvar count = ...原创 2018-11-23 20:22:42 · 519 阅读 · 1 评论 -
【JavaScript】用JavaScript实现一个集合
add(value) :向集合添加一个新的项。delete(value) :从集合移除一个值。has(value) :如果值在集合中,返回 true ,否则返回 false 。clear() :移除集合中的所有项。size() :返回集合所包含元素的数量。与数组的 length 属性类似。values() :返回一个包含集合中所有值的数组。function Set() { let...原创 2018-10-18 21:21:13 · 345 阅读 · 0 评论 -
poj 2823 Sliding Window 线段树
Sliding Window Time Limit: 12000MS Memory Limit: 65536K Total Submissions: 50906 Accepted: 14640 Case Time Limit: 5000MS Description An array of size n ≤ 106 is given to you. There is a sliding原创 2017-09-19 21:27:25 · 396 阅读 · 0 评论 -
hdu 1216 Assistance Required
Assistance RequiredTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 1468 Accepted Submission(s): 764Problem DescriptionAfter the 199原创 2017-09-12 20:00:38 · 361 阅读 · 0 评论 -
C - Color the ball hdu1556 区间更新问题
#include#define MAX 100005 int main(){ int n; while(scanf("%d",&n)&&n != 0) { int i = 0 , array[MAX] = {0}; //将数组初始化成0 int a = 0 , b = 0; for(i = 1 ; i <= n ; i++) { scanf("%d %d",&a原创 2017-09-09 17:01:22 · 302 阅读 · 0 评论 -
hdu 2043 密码
#include#includeusing namespace std; int main(){ int T; cin>>T; while(T--){ int a,b,c,d,count; char str[52]; int length=0; a=b=c=d=count=0; cin>>str; length=strlen(str); if(length1原创 2017-09-09 16:55:00 · 280 阅读 · 0 评论 -
小明A+B HDU - 2096
#includeint main(){ int T,a,b,sum; scanf("%d",&T); while(T--){ scanf("%d %d",&a,&b); if(a>=100) a=a%100; if(b>=100) b=b%100; sum=a+b; if(sum>=100) sum=sum%100; printf("%d\n",sum);原创 2017-09-09 16:53:50 · 303 阅读 · 0 评论 -
Elevator HDU - 1008
#includeint main(){ int n; while(scanf("%d",&n)&&n!=0){ int i=0,time=0,from=0,go=0; for(i=0;i<n;i++){ scanf("%d",&go); if(go>from){ time+=(go-from)*6+5; } else time+=(from-g原创 2017-09-09 16:52:11 · 250 阅读 · 0 评论 -
hdu 1391 Number Steps
Number StepsTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 5682 Accepted Submission(s): 3482Problem Description Starting from point (0,0)原创 2017-09-14 20:10:15 · 274 阅读 · 0 评论 -
hdu 1280 前m大的数
AC代码:#include<cstdio>#include<algorithm>using namespace std;int a[3005], b[4500000];bool cmp(int a, int b){ //由大到小排列 return a > b;}int main(){ int n, m; while(scanf("%d %d", &n, &m)原创 2017-09-14 17:33:52 · 260 阅读 · 0 评论 -
Hdu 第几天?
Problem Description 给定一个日期,输出这个日期是该年的第几天。Input 输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。Output 对于每组输入数据,输出一行,表示该日期是该年的第几天。Sample Input 1985/1/20 2006/3/12Sample Outpu原创 2017-08-18 20:30:26 · 447 阅读 · 0 评论 -
hdu 2002 计算球的体积
AC代码:#include <stdio.h> #define PI 3.1415927 int main() { double r; while (scanf("%lf", &r) != EOF) { printf("%lf\n", 4.0*PI*r*r*r/3.0); } return 0; }原创 2017-08-18 20:26:24 · 326 阅读 · 0 评论 -
hdu 1014 最大公约数
#include#includeusing namespace std;int gcd(int a, int b){ int x; x = a % b; while(x != 0){ a = b; b = x; x = a % b; } return b;}int main(){ int i, j; while(scanf("%d %d", &i, &j) !=原创 2017-10-12 12:32:22 · 354 阅读 · 0 评论 -
【JavaScript算法和数据结构】Reverse a String
题目来源:Free Code Camp 先把字符串转化成数组,再借助数组的reverse方法翻转数组顺序,最后把数组转化成字符串。 代码:function reverseString(str) { // 请把你的代码写在这里 var myStr = str.split('').reverse().join(''); return myStr;}reverseString(...原创 2018-08-18 16:45:34 · 365 阅读 · 1 评论 -
【JavaScript】freecodecamp---------Chunky Monkey
猴子吃香蕉, 分割数组(猴子吃香蕉可是掰成好几段来吃哦) 把一个数组arr按照指定的数组大小size分割成若干个数组块。 例如:chunk([1,2,3,4],2)=[[1,2],[3,4]]; chunk([1,2,3,4,5],2)=[[1,2],[3,4],[5]]; function chunk(arr, size) { // 请把你的代码写在这里 ...原创 2018-08-19 19:46:47 · 228 阅读 · 0 评论 -
hdu 1166 敌兵布阵 线段树
Problem Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况。由于采取了某种先进的监测手段,所以每个工兵营地的人数C国都掌握的一清二楚,每个工兵营地的人数都有可能发生变动,可能增加或减少若干人手,但这些都逃不过C国的监视。原创 2017-09-19 21:21:02 · 410 阅读 · 0 评论