varfindSubsequences=function(nums){let result =[]let path =[]functionbacktracing(startIndex){if(path.length >1){result.push(path.slice())}let uset =[]for(let i = startIndex; i < nums.length; i++){if((path.length >0&& nums[i]< path[path.length -1])|| uset[nums[i]+100]){continue}uset[nums[i]+100]=truepath.push(nums[i])backtracing(i +1)path.pop()}}backtracing(0)return result
};
12. 全排列
constpermute=(nums)=>{const res =[];const used ={};functiondfs(path){if(path.length == nums.length){// 个数选够了res.push(path.slice());// 拷贝一份path,加入解集resreturn;// 结束当前递归分支}for(const num of nums){// for枚举出每个可选的选项// if (path.includes(num)) continue; // 别这么写!查找是O(n),增加时间复杂度if(used[num])continue;// 使用过的,跳过path.push(num);// 选择当前的数,加入pathused[num]=true;// 记录一下 使用了dfs(path);// 基于选了当前的数,递归path.pop();// 上一句的递归结束,回溯,将最后选的数pop出来used[num]=false;// 撤销这个记录}}dfs([]);// 递归的入口,空path传进去return res;};
13. 全排列 II
varpermuteUnique=function(nums){const ans =[];const vis =newArray(nums.length).fill(false);constbacktrack=(idx, perm)=>{if(idx === nums.length){ans.push(perm.slice());return;}for(let i =0; i < nums.length;++i){if(vis[i]||(i >0&& nums[i]=== nums[i -1]&&!vis[i -1])){continue;}perm.push(nums[i]);vis[i]=true;backtrack(idx +1, perm);vis[i]=false;perm.pop();}}nums.sort((x, y)=> x - y);backtrack(0,[]);return ans;};
在 Go 语言中,要实现烟花秀效果可以使用 github.com/fogleman/gg 包进行绘图。以下是一个简单的例子:
首先,确保你已经安装了(有时候需要梯子才可以安装) github.com/fogleman/gg 包:
go get -u github.c…
下面代码的结果是:( )
#include <stdio.h>
int main()
{int a, b, c;a 5;c a;b c, c, a, a;b a c;printf("a %d b %d c %d\n:", a, b, c);return 0;
}A.a 8 b 23 c 8 B.a 9 b 23 c 8 C.a 9 b 25 c 8 D.a 9 b 24 c 8
解析&…