JavaScript版leetcode源码(持续更新)小白第一次进行刷题
来源:互联网 发布:托福网络课程视频 编辑:程序博客网 时间:2024/05/16 23:55
、、第一题
* @param {number[]} nums * @param {number} target * @return {number[]} */var twoSum = function(nums, target) { var result=[]; for(var i=0;i<nums.length-1;i++){ for(var j=i+1;j<nums.length;j++){ if(nums[i]+nums[j]==target){ result.push(i); result.push(j); return result; } } } return false;};//第二题
/** * Definition for singly-linked list. * function ListNode(val) { * this.val = val; * this.next = null; * } *//** * @param {ListNode} l1 * @param {ListNode} l2 * @return {ListNode} */var addTwoNumbers = function(l1, l2) { var sum=l1.val+l2.val; var next1=l1.next; var next2=l2.next;var l3 = new ListNode(sum%10);//初始化l3var node=l3;//更新node的同时更新l3sum = Math.floor(sum/10);//进位,如果有的话while(next1 || next2 || sum!==0){ //next1或者next2为空时补充为0 //当两个都为空且没有进位的时候的时候停止,有进位的话还需要补充一个进位sum += (next1?next1.val:0)+(next2?next2.val:0);node.next = new ListNode(sum%10);node = node.next;next1 = next1?next1.next:null;next2 = next2?next2.next:null;sum = Math.floor(sum/10);}return l3;};
//第三题
/** * @param {string} s * @return {number} */var lengthOfLongestSubstring = function(s) { //边界值判断,如果是空串返回0 if(s===''){//js用===进行判断 return 0; } var maxLength=1;//如果不是空,初始最大值就应该是1 var nextChar;//用来判断下一个字符是否可以包含在最大串中 var currentLength=1;//用来记录当前子串的长度,初始为1 for(var i=1;i<s.length;i++){ nextChar=s.substr(i-currentLength,currentLength).indexOf(s[i]); if(nextChar===-1){//目前的最大子串中不包含下一个字符,最大子串加1 currentLength++; }else{//包含下一个字符,从第一个重复字符的下一个位置开始从新判断 currentLength-=nextChar; } if(maxLength<currentLength){ maxLength=currentLength;//更新最大子串长度 } } return maxLength;};【注】:在判断当前字符是否在当前子串中的时候,截取当前最大长度子串一定要使用s.substr(start,length),第一次我使用了s.substring(start,end),来进行截取,两者的参数是不同的,作为一个小白不是很在意这些,越学越明白啊!!!共勉
//第四题
思想:将两个数组合并,之后进行排序,由于js排序默认是字母序,因此需要对排序函数协商排序规则。
排好序之后的合并数组寻找中间数即可
/** * @param {number[]} nums1 * @param {number[]} nums2 * @return {number} */function NumAscSort(a,b){ return a-b;}var findMedianSortedArrays = function(nums1, nums2){ var maxLen=nums1.length+nums2.length; if(nums1.length===0&&nums2.length===0){ return 0; } for(var i=0;i<nums2.length;i++){ nums1.push(nums2[i]); } nums1.sort(NumAscSort); if(maxLen%2===1){ return nums1[Math.floor(maxLen/2)]; }else{ //return nums1; return (nums1[maxLen/2-1]+nums1[maxLen/2])/2; }};【注】:不能新建一个数组来存合并后的数组,因为这样空间占用率不符合规则,可以用一个数组来push另一个数组
0 0
- JavaScript版leetcode源码(持续更新)小白第一次进行刷题
- javascript小白学习指南4--持续更新
- JavaScript 小知识点 持续更新
- 小白进化论(持续更新)
- leetcode个人刷题笔记(持续更新)
- leetcode算法刷题-持续更新
- JavaScript笔试题(持续更新)
- Javascript基础小知识---------持续更新中..............
- javascript一些小例子总结,持续更新...
- LeetCode || 总结(持续更新)
- Javascript例题(持续更新)
- 2016版IDEA使用小技巧(持续更新)
- Leetcode自我做题总结汇总(持续更新)
- javascript使用中的一些小功能总结(持续更新中)
- JavaScript中的小技巧 持续更新记录(2017/5/25)
- 小白自学搭建单机版的Hadoop生态圈(持续更新)
- PYTHON常用小知识(持续更新)
- web开发小知识点(持续更新)
- JS导出excel--2
- CCF 201512-4 送货(最小字典序欧拉回路)
- 单例模式
- java选择排序
- JS导出excel--3
- JavaScript版leetcode源码(持续更新)小白第一次进行刷题
- birt数据库连接 配置文件方式连接数据库
- ds 2.2 逆序数
- As混淆详解
- Unity使用WebCamTexture 实现手机前后摄像头调用
- Java调用天气接口(百度天气)解析返回的JSON数据
- 工厂模式
- java学习计划(签完工作之前)
- DAGScheduler 和 TaskScheduler 的关系