/**
* @param {number[]} nums
* @return {number[][]}
*/
var permute = function(nums) {
let ans = []
let len = nums.length
if (len === 0) return ans
if (len === 1) return [nums]
let vis = new Array(len).fill(false)
let permu = function(arr) {
if (arr.length === len) {
ans.push(arr.slice())
return
}
for (let i = 0; i < len; i++) {
if (vis[i]) continue
vis[i] = true
arr.push(nums[i])
permu(arr)
arr.pop()
vis[i] = false
}
}
permu([])
return ans
};
/**
* @param {ListNode} l1
* @param {ListNode} l2
* @return {ListNode}
*/
var addTwoNumbers = function(l1, l2) {
let ehead = new ListNode()
let nowp = ehead
let flag = 0 // 进位
while(l1 || l2 || flag) {
let x = l1? l1.val: 0
let y = l2? l2.val: 0
let sum = x + y + flag
flag = sum >= 10? 1: 0
nowp.next = new ListNode(sum % 10)
nowp = nowp.next
if(l1) l1 = l1.next
if(l2) l2 = l2.next
}
return ehead.next
};