摘要:工具安裝使用示例問題下面兩部分的順序不能交換第一個(gè)參數(shù)是空數(shù)組故意寫錯(cuò)答案,展示測(cè)試失敗輸出效果測(cè)試用例編寫說明要測(cè)試的都是函數(shù),參數(shù)個(gè)數(shù)不定,但返回值是一個(gè)。上面例子的輸入?yún)?shù)是,第一個(gè)參數(shù)是數(shù)組,第二個(gè)參數(shù)是數(shù)值返回值是一個(gè)數(shù)組。
描述
最近在用es6解leetcode,當(dāng)問題比較復(fù)雜時(shí),有可能修正了新的錯(cuò)誤,卻影響了前面的流程。要用通用的測(cè)試工具,卻又有殺雞用牛刀的感覺,所以就寫了個(gè)簡(jiǎn)單易用的leetcode開發(fā)測(cè)試工具,分享與大家。
工具安裝npm i leetcode_test
使用示例1 (問題010)codes:
let test = require("leetcode_test").test /** * @param {string} s * @param {string} p * @return {boolean} */ var isMatch = function (s, p) { if (p.length === 0) { return s.length === 0 } firstMath = s.length > 0 && (p[0] === s[0] || p[0] === ".") if (p.length >= 2 && p[1] === "*") { //下面兩部分的順序不能交換 return firstMath && isMatch(s.substring(1), p) || isMatch(s, p.substring(2)) } else { return firstMath && isMatch(s.substring(1), p.substring(1)) } }; let cases = [ // [[[],""],], //第一個(gè)參數(shù)是空數(shù)組 [["abbabaaaaaaacaa", "a*.*b.a.*c*b*a*c*"], true], [["aaa", "a*ac"], true], //故意寫錯(cuò)答案,展示測(cè)試失敗輸出效果 [["a", "..*"], true], ] test(isMatch, cases)
測(cè)試用例編寫說明
leetcode要測(cè)試的都是函數(shù),參數(shù)個(gè)數(shù)不定,但返回值是一個(gè)。因此,我設(shè)計(jì)用例的輸入形式為一個(gè)用例就是一個(gè)兩個(gè)元素的數(shù)組,第一個(gè)元素是一個(gè)數(shù)組:對(duì)應(yīng)輸入?yún)?shù);第二個(gè)元素是一個(gè)值。
上面例子的輸入?yún)?shù)是([2, 7, 11, 15], 91),第一個(gè)參數(shù)是數(shù)組,第二個(gè)參數(shù)是數(shù)值;返回值是一個(gè)數(shù)組([0, 1])。 如果要測(cè)試的函數(shù)的輸入?yún)?shù)就是一個(gè)數(shù)組,要注意輸入形式,比如,求[1,2,3,4]平均值,要這樣輸入測(cè)試用例: [[[1,2,3,4]],2.5]
out:
test [1] success, Input: ("abbabaaaaaaacaa","a*.*b.a.*c*b*a*c*"); Expected: true; Output: true test [2] fail, Input: ("aaa","a*ac"); Expected: true; Output: false test [3] success, Input: ("a","..*"); Expected: true; Output: true Result: test 3 cases, success: 2, fail: 1 running 5 ms使用示例2 (問題015)
codes:
let test = require("leetcode_test").test /** * @param {number[]} nums * @return {number[][]} */ var threeSum = function (nums) { nums = nums.sort((a,b) => a - b); const rs = []; let i = 0; while (i < nums.length) { let one = nums[i]; let two = i + 1; //從隊(duì)列頭部開始 let three = nums.length - 1; //從隊(duì)列尾部開始 while (two < three) { let sum = one + nums[two] + nums[three]; if (sum === 0) { rs.push([one,nums[two],nums[three]]); two++; three--; while (two < three && nums[two] === nums[two - 1]) { two++; } while (two < three && nums[three] === nums[three + 1]) { three--; } } else if (sum > 0) three--; else two++; } i++; while (i < nums.length && nums[i] === nums[i - 1]) i++; } return rs; }; let cases = [ // [[[],""],], //第一個(gè)參數(shù)是空數(shù)組 [[[]],[]], [[[1,-1,-1,0]],[-1,0,1]], [[[-1,0,1,0]],[[-1,0,1]]], [[[0,0,0,0]],[0,0,0]], [[[-1,2,-1]],[-1,-1,2]], [[[0,0,0]],[0,0,0]], [[[-1,0,1,2,-1,-4]],[[-1,-1,2],[-1,0,1]]], //answer"s sequence is not important [[[-1,0,1,2,-1,-4]],[[-1,0,1],[-1,-1,2]]], //answer"s sequence is not important [[[-4,-2,-2,-2,0,1,2,2,2,3,3,4,4,6,6]],[[-4,-2,6],[-4,0,4],[-4,1,3],[-4,2,2],[-2,-2,4],[-2,0,2]]], [[[-4,-2,1,-5,-4,-4,4,-2,0,4,0,-2,3,1,-5,0]],[[-5,1,4],[-4,0,4],[-4,1,3],[-2,-2,4],[-2,1,1],[0,0,0]]], ] test(threeSum,cases)
測(cè)試用例編寫說明
測(cè)試用例的7與8,期待結(jié)果的數(shù)組元素順序并不影響答案的判定。
out:
test [1] success, Input: ([]); Expected: []; Output: [] test [2] success, Input: ([-1,-1,0,1]); Expected: [-1,0,1]; Output: [[-1,0,1]] test [3] success, Input: ([-1,0,0,1]); Expected: [[-1,0,1]]; Output: [[-1,0,1]] test [4] success, Input: ([0,0,0,0]); Expected: [0,0,0]; Output: [[0,0,0]] test [5] success, Input: ([-1,-1,2]); Expected: [-1,-1,2]; Output: [[-1,-1,2]] test [6] success, Input: ([0,0,0]); Expected: [0,0,0]; Output: [[0,0,0]] test [7] success, Input: ([-4,-1,-1,0,1,2]); Expected: [[-1,-1,2],[-1,0,1]]; Output: [[-1,-1,2],[-1,0,1]] test [8] success, Input: ([-4,-1,-1,0,1,2]); Expected: [[-1,-1,2],[-1,0,1]]; Output: [[-1,-1,2],[-1,0,1]] test [9] success, Input: ([-4,-2,-2,-2,0,1,2,2,2,3,3,4,4,6,6]); Expected: [[-2,-2,4],[-2,0,2],[-4,-2,6],[-4,0,4],[-4,1,3],[-4,2,2]]; Output: [[-2,-2,4],[-2,0,2],[-4,-2,6],[-4,0,4],[-4,1,3],[-4,2,2]] test [10] success, Input: ([-5,-5,-4,-4,-4,-2,-2,-2,0,0,0,1,1,3,4,4]); Expected: [[-2,-2,4],[-2,1,1],[-4,0,4],[-4,1,3],[-5,1,4],[0,0,0]]; Output: [[-2,-2,4],[-2,1,1],[-4,0,4],[-4,1,3],[-5,1,4],[0,0,0]] Result: test 10 cases, success: 10, fail: 0項(xiàng)目地址
工具地址:https://github.com/zhoutk/lee...
解答地址:https://github.com/zhoutk/lee...
最近一直在用,已經(jīng)把輸出的樣子調(diào)得還能看過眼了,答案對(duì)比算法,也改進(jìn)了。遇到問題,我會(huì)持續(xù)改進(jìn),大家遇到問題也可提bug給我,我會(huì)盡快處理。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/99958.html
摘要:介紹標(biāo)簽下的日志是一個(gè)簡(jiǎn)單易于使用自托管的分析解決方案。其目標(biāo)是為大家提供一個(gè)更友好,以隱私為中心的替代的方案。 前言: 我們?cè)诮⒕W(wǎng)站后,即使是我這種摸魚博客,給網(wǎng)站安裝網(wǎng)站統(tǒng)計(jì)工具也是必不可少的,能直觀的了解網(wǎng)站的訪問情況,也有利于我們的SEO優(yōu)化分析,常用的第三方統(tǒng)計(jì)平臺(tái)不少,比如51LA、CNZZ、Google Analytics、百度統(tǒng)計(jì)等,當(dāng)然你若是國(guó)內(nèi)網(wǎng)站且主要提交...
摘要:是一套以技術(shù)搭建的項(xiàng)目模板,適用于移動(dòng)端和開發(fā)。其中包含常用常用組件,精細(xì)計(jì)算的,以及諸多項(xiàng)目的實(shí)踐。 react-template-easily Desc: react-template-easily 是一套以react技術(shù)搭建的項(xiàng)目模板,適用于移動(dòng)端H5, webapp和hybirdApp開發(fā)。其中包含常用20+常用組件,精細(xì)計(jì)算的rem,以及諸多項(xiàng)目的實(shí)踐。 URL: http...
摘要:是一套以技術(shù)搭建的項(xiàng)目模板,適用于移動(dòng)端和開發(fā)。其中包含常用常用組件,精細(xì)計(jì)算的,以及諸多項(xiàng)目的實(shí)踐。 react-template-easily Desc: react-template-easily 是一套以react技術(shù)搭建的項(xiàng)目模板,適用于移動(dòng)端H5, webapp和hybirdApp開發(fā)。其中包含常用20+常用組件,精細(xì)計(jì)算的rem,以及諸多項(xiàng)目的實(shí)踐。 URL: http...
摘要:是一套基于和的表格組件。將的功能進(jìn)行了封裝,并增加了表格的增刪改查數(shù)據(jù)校驗(yàn)表格內(nèi)編輯等常用的功能。大部分功能可由配置實(shí)現(xiàn),在實(shí)現(xiàn)并擴(kuò)展了表格組件功能的同時(shí),降低了開發(fā)難度,減少了代碼量,大大簡(jiǎn)化了開發(fā)流程。 D2-Crud 是一套基于Vue.js 2.2.0+ 和 Element UI 2.0.0+ 的表格組件。D2-Crud 將 Element 的功能進(jìn)行了封裝,并增加了表格的增刪改...
閱讀 2581·2021-11-22 12:01
閱讀 1105·2021-11-15 11:37
閱讀 3685·2021-09-22 14:59
閱讀 1746·2021-09-04 16:45
閱讀 1382·2021-09-03 10:30
閱讀 1013·2021-08-11 11:18
閱讀 2459·2019-08-30 10:53
閱讀 2013·2019-08-29 15:13