剑指offer
糊里糊涂小丸子
这个作者很懒,什么都没留下…
展开
-
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针(js代码)
1.题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5。 2.代码实现 /*function ListNode(x){ this.val = x; this.next = null; }*/ function deleteDuplication(pHead) { if (pHead == null原创 2020-06-15 11:13:07 · 343 阅读 · 0 评论 -
请实现一个函数用来找出字符流中第一个只出现一次的字符(js代码)
1.题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。 如果当前字符流没有存在出现一次的字符,返回#字符。 2.具体实现 //Init module if you need var b=""; function Init() { // write code here b=""; } //Insert one char fr原创 2020-06-15 09:51:02 · 607 阅读 · 0 评论 -
给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1](js代码)
1.题目描述 给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…*A[i-1]A[i+1]…*A[n-1]。不能使用除法。(注意:规定B[0] = A[1] * A[2] * … * A[n-1],B[n-1] = A[0] * A[1] * … * A[n-2];) 2.具体代码 function multiply(array) { // write code here var B=[]; // cons原创 2020-06-15 09:32:52 · 600 阅读 · 0 评论 -
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)(js代码)
1.题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。 2.具体实现 //s字符串 function isNumeric(s) { // write code here var n=0; if(s[s.length-1]=="."||s[s.length-1]=="e"||s[s.原创 2020-06-14 22:09:31 · 547 阅读 · 0 评论 -
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。(js)
1.题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 2.代码 var res=[]; function push(node) { // write code here for(var i=res.length;i>0;i–){ res[i]=res[i-1]; } res[0]=node; return res; } function pop() { // write code here var pro=res[res.length-1]; res.sp原创 2020-06-12 10:50:37 · 252 阅读 · 0 评论 -
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。(js代码)
1.题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 题目写的天华乱坠,其实就是找一个乱序数组中的最小值。 2.代码 function minNumberInRotateArray(rotateArray) { // write code here if(rotateAr原创 2020-06-12 10:48:48 · 340 阅读 · 0 评论 -
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。(js代码)
1.题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。 n<=39 2.代码 function Fibonacci(n) { var f1=0; if(n>2){ f1=Fibonacci(n-1)+Fibonacci(n-2); } else if(n==0){ f1=0; return f1;//不加会超时 } else{ f1=1; return f1;//不加会超时 } return f1; } 运行时间:1903原创 2020-06-12 10:46:51 · 1298 阅读 · 1 评论 -
在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。(js代码)
1.题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。 2.代码 function duplicate(numbers, duplication) { // write code here //这里要特别注意~找到任意重复的一个值并赋值到duplication[0]原创 2020-06-12 10:44:33 · 762 阅读 · 0 评论 -
不用加减乘除符号的情况下实现加法运算(js代码)
1.题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 2.解题思路 根据按位异或,可得到没有进位的加法结果,关键在于怎么把进位再与得到的结果相加,才可以得到最后的结果。其中进位的情况是两个都为1时,与按位与运算的逻辑结果一致,但进位是与前一位相加,因此需要左移一位。 3.具体的代码实现 function Add(num1, num2) { // write code here //按位异或得到的无进位的加法 //按位与并且左移一位为进位值,进位原创 2020-06-11 10:49:13 · 551 阅读 · 0 评论 -
不能使用字符串转换整数的库函数情况下 将一个字符串转换成一个整数(javascript代码)
1.题目描述 (1)题目输入描述: 输入一个字符串,包括数字字母符号,可以为空。 (2)题目输出描述 如果是合法的数值表达则返回该数字,否则返回0。 2.解题思路 关键在于:“0”-“9”字符的ASCII码值为48-57,可通过字符的减法,求出代表的数字大小,即“9”-“0”等于数字9。通过每求出一位数字,之前的结果*10,这样就能把字符串转化为整数。特殊的,需要处理带有“+”、“-”符号的字符串,并且此符号只能出现在第一个字符的位置。 3.具体的代码实现 function StrToInt(str) {原创 2020-06-11 10:37:27 · 446 阅读 · 0 评论