程序
Dora_5537
这个作者很懒,什么都没留下…
展开
-
【笔试】编程题
1. 已知购买礼物的总金额,各礼品的单价-数组A和热度值-数组B,求礼物的最大热度值。(动态规划之01背包问题)JAVA实现:public static void solution(int total,int[] prices,int[] hots) { int[][] results = new int[prices.length+1][total+1]; ...原创 2019-08-27 11:40:44 · 978 阅读 · 0 评论 -
【剑指Offer】面试题:栈和队列
剑指Offer中一共有4道关于栈和队列的面试题面试题9:用两个栈来实现队列题目描述:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。JS实现:【剑指Offer】面试题9:用两个栈实现队列——JS实现面试题30:包含min函数的栈题目描述:定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数。在该栈中,调用min、push...原创 2019-06-06 15:54:57 · 340 阅读 · 0 评论 -
【剑指Offer】面试题:树和二叉树
剑指Offer中一共有11道关于树和二叉树的面试题面试题7:重建二叉树题目描述:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。基础知识:在二叉树的前序遍历序列中,第一个数字总是树的根节点的值。在中序...原创 2019-06-04 16:06:50 · 400 阅读 · 0 评论 -
【剑指Offer】面试题:链表
剑指Offer中一共有9道关于链表的面试题如何在JS中创建一个链表面试题6:从尾到头打印链表题目描述:输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。方法一:栈(推荐)思路:遍历链表,把链表节点从头到尾依次入栈;依次输出栈顶元素,并弹出栈顶元素。方法二:递归思路:每访问到一个节点的时候,先递归输出它后面的节点,再输出该节点自身。面试题18:删除链表的...原创 2019-05-31 15:51:54 · 455 阅读 · 0 评论 -
【剑指Offer】面试题3:数组中重复的数字——JS实现
题目描述:在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出应该是2或3。代码如下:解法一:// 从第一个数开始,每一个数依次与其后面的数字进行比较,若相等,则将其赋值到duplicati...原创 2019-04-30 17:14:57 · 618 阅读 · 0 评论 -
【剑指Offer】面试题13:机器人的运动范围——JS实现
题目描述:地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?代码如下:解法一:funct...原创 2019-04-30 09:45:19 · 551 阅读 · 0 评论 -
【剑指Offer】面试题10:斐波那契数列——JS实现
题目描述:大家都知道斐波那契数列,现在要求输入一个整数n(n<=39),请你输出斐波那契数列的第n项(从0开始,第0项为0)。注:斐波那契数列的定义如下:代码如下:解法一:function Fibonacci(n){ if(n<=0) { return 0; } if(n===1) { return ...原创 2019-04-29 17:14:05 · 931 阅读 · 0 评论 -
【剑指Offer】面试题9:用两个栈实现队列——JS实现
一、用两个栈实现队列题目描述:用两个栈来实现一个队列,完成队列的 Push 和 Pop 操作。队列中的元素为 int 类型。注:1.队列 —— 先进先出。 栈 —— 先进后出。2. push: 在数组的末尾添加元素,并返回新的长度。(改变数组) pop: 从数组中把最后一个元素删除,并返回这个元素的值。(改变数组)代码如下:var stack1=...原创 2019-04-29 12:45:54 · 439 阅读 · 0 评论 -
【剑指Offer】面试题29:顺时针打印矩阵——JS实现
一、顺时针打印NxN矩阵题目描述:输入一个正整数N,输出一个NxN矩阵。示例如下:代码如下:function PrintMatrix(n){ let result = []; let number = 1; let start = 0; // 生成一个NxN空矩阵 for(let i = 0; i < n; i++){ ...原创 2019-04-17 13:26:06 · 700 阅读 · 0 评论 -
【剑指Offer】面试题:字符串
剑指Offer中一共有7道关于字符串的面试题面试题5:替换空格题目描述:请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy.。思路:JSfunction replaceSpace(str){ return str.replace(/\s/g,'%20')}...原创 2019-06-20 22:42:28 · 299 阅读 · 0 评论 -
【剑指Offer】面试题:数组
剑指Offer中一共有12道关于数组的面试题目录面试题3:数组中重复的数字面试题4:二维数组中的查找面试题11:旋转数组的最小数字面试题21:调整数组顺序使奇数位于偶数前面面试题39:数组中出现次数超过一半的数字面试题42:连续子数组的最大和面试题45:把数组排成最小的数面试题51:数组中的逆序对面试题53:在排序数组中查找数字面试题56:数组中数字出...原创 2019-07-11 09:43:39 · 536 阅读 · 0 评论 -
【编程题】数组扁平化
一、递归function flatten(arr){ let res = []; for(let i=0; i<arr.length; i++){ if(Array.isArray(arr[i])){ res = res.concat(flatten(arr[i])); } else { r...转载 2019-09-11 01:48:01 · 255 阅读 · 0 评论 -
【编程题】数组去重
测试数组:let arr = [ 1,1,'true','true',true,true,15,15,false,false,undefined,undefined,null,null,NaN,NaN,'NaN', 0, 0, 'a', 'a',{},{} ] ;一、ES6 Setlet newArr = Array.from(new Set(arr));// 或者 let n...转载 2019-09-04 23:15:10 · 523 阅读 · 0 评论 -
【编程题】滑动窗口的最大值
问题描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,...原创 2019-08-08 13:20:36 · 405 阅读 · 0 评论 -
【编程题】动态规划之01背包问题
问题描述现有n个物品,它们有各自的体积和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和?代码实现function knapsack(capacity,weight,value){ // 初始化一个 weight.length+1行 X capacity+1列 的二维数组 let dp = []; for(let i=0; i<w...原创 2019-08-07 21:09:11 · 664 阅读 · 0 评论 -
【算法】常见的几种排序算法JS
一、冒泡排序冒泡排序的预备知识从第一个元素开始,比较相邻的两个元素,如果前一个比后一个大,则交换位置。 第一轮结束的时候,最后一个元素应该是最大的。 按照步骤1的方法进行相邻两个元素的比较,这个时候由于最后一个元素已经是最大的了,所以最后一个元素不用比较。 时间复杂度:平均时间复杂度、最好情况、最坏情况。 空间复杂度:O(1);没有借助多余空间。冒泡排序的JS实现通过冒泡排序...原创 2019-08-06 22:28:17 · 300 阅读 · 0 评论 -
【数据结构】如何在JS中创建一个链表
链表是一种动态的数据结构,不同于数组的是,链表分配内存空间的灵活性,它不会像数组一样被分配一块连续的内存。当你想在数组的任意位置,插入一个新值的时候,必须对数组中的各个元素进行相应的位置移动才能达到目标,开销显然是很大的。然而链表的灵活性在于它的每个元素节点分为两部分,一部分是存储元素本身,另一部分是指向下一个节点元素的引用,也可以称为指针,当你要插入数据时,把上一个节点的向下指针...转载 2019-05-31 17:55:49 · 6178 阅读 · 0 评论 -
【数据结构】算法的时间复杂度和空间复杂度
转载原文:算法的时间复杂度和空间复杂度详解一、时间复杂度1.时间频度一个算法中的语句执行次数称为语句频度或时间频度,记为T(n)。2.时间复杂度(1) 在时间频度中,n称为问题的规模,当n不断变化时,时间频度T(n)也会不断变化。但有时我们想知道它变化时呈现什么规律。为此,我们引入时间复杂度概念。 一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表...转载 2019-05-07 15:22:37 · 566 阅读 · 0 评论 -
【剑指Offer】面试题:其他
【剑指Offer】未归类的17道面试题目录面试题1:赋值运算符函数面试题2:实现Singleton模式面试题16:数值的整数次方面试题17:打印从1到最大的n位数面试题19:正则表达式匹配面试题40:最小的 k 个数面试题41:数据流中的中位数面试题43:1~n整数中1出现的次数面试题44:数字序列中某一位的数字面试题47:礼物的最大价值面试题49:...原创 2019-07-12 16:26:09 · 552 阅读 · 0 评论