- 博客(112)
- 收藏
- 关注
原创 IOS swift使用导航栏实践
ios中不使用app创建时自带的main.storyboard创建导航栏,而采用swift代码控制导航栏实践demo
2022-08-27 23:32:34 906 1
原创 Android webview加载页面获取摄像头权限实践(Kotlin)
Android webview加载页面获取摄像头权限实践(Kotlin)
2022-08-21 19:28:54 3553
原创 刷题记录(Find Bottom Left Tree Value)
Leecode: Find Bottom Left Tree Value(JS解答) function findBottomLeftValue(root: TreeNode | null): number { let resArr:number[] = []; helper(root, 0, resArr); return resArr[resArr.length-1]; }; function helper(root: TreeN
2021-05-25 17:49:17 97
原创 刷题记录(Counting Bits)
Leecode: Counting Bits(JS解答)思路:res数组表示所求结果集,preIndex = i&(i-1)表示把i的最后一位1变为0; function countBits(n: number): number[] { let res:number[] = new Array(n+1).fill(0); for(let i = 1; i <= n; i++){ let preIndex = i&(i-1
2021-05-25 16:05:04 86
原创 刷题记录(Maximum Swap)
Leecode:Maximum Swap(JS解答)思路:使用一个数组存下 0-9每个数字在num中,从左向右遍历,最后出现时的index位置 function maximumSwap(num: number): number { let numArr = String(num).split(""); let lastArr:number[] = new Array(10).fill(-1); //每个数字最后一次出现的位置 for(let i
2021-05-24 15:12:22 105
原创 刷题记录(Delete Node in a BST)
Leecode: Delete Node in a BST(JS解答)解题思路:删除节点前,先通过搜索二叉树的性质找到要删除的节点,找到后,关键的地方来了,被删除节点可能存在以下三种情况:1,叶子节点,左右子节点为null,这种可以直接删除2,左子节点不为空,则需要获取左子树的最大值,然后删除当前节点,遍历调节左子树3,右子节点不为空,则获取右子树的最小值,删除当前节点,遍历调节右子树上代码: function deleteNode(root: TreeNode | null, key:
2021-05-09 23:11:44 75
原创 刷题记录(Find Mode in Binary Search Tree)
Leecode: Find Mode in Binary Search Tree思路:中序遍历的时候,重复的数字会连续出现,这是解题的关键上代码: function findMode(root: TreeNode | null): number[] { let base = 0, count = 0, maxCount = 0, res:number[] = []; dfs(root); return res; function h
2021-05-09 22:58:46 107
原创 刷题记录(Increasing Subsequences)
leecode: Increasing Subsequences(JS解答)直接上代码: function findSubsequences(nums: number[]): number[][] { let res:number[][] = []; let temp:number[] = []; helper(0, Number.MIN_SAFE_INTEGER,nums); return res; function help
2021-05-09 22:53:16 98
原创 刷题记录(Number of Matching Subsequences)
Leecode:Number of Matching Subsequences(JS解答)解题思路:这里采用桶排序的思路,先把words数组按照首字母进行分组,例如:[“a”,“bb”,“acd”,“ace”]=》 “a" : “a”,“acd”,“ace”; “b” : “bb”;然后开始遍历s字符,如examper1中的s:遍历到s【0】(“a”),words => “c” : “cd”,“ce”; “b” : “bb”;遍历到s【1】(“b”),words => “c” :
2021-05-09 22:42:59 134
原创 刷题记录(Count Complete Tree Nodes)
Leecode:Count Complete Tree Nodes(JS解答)解法一:暴力搞起 function countNodes(root: TreeNode | null): number { if(root == null) return 0; let left = countNodes(root.left); let right = countNodes(root.right); return left + right +
2021-05-04 17:38:13 100
原创 刷题记录(Binary Tree Right Side View)
Leecode: Binary Tree Right Side View(JS解答)dfs思路: function rightSideView2(root: TreeNode | null): number[] { let res:number[] = []; helper(root, 0); return res; function helper(root: TreeNode | null, depth: number){
2021-05-04 10:55:31 78
原创 刷题记录(Target Sum)
Leecode: Target Sum (JS解答)解题思路:采用动态规划的思路,首先得出状态转移方程式:dp[i][j] = dp[i - 1][j - nums[i]] + dp[i - 1][j + nums[i]];但是这个不能拿来直接用,因为dp[i][j]依赖dp[i - 1][j - nums[i]],关键是这个nums[i],构成环状依赖了,所以需要对方程式进行变形处理才可以用:dp[i][j] += dp [i-1][j-nums[i]]dp[i][j] += dp [i-1]
2021-04-27 18:33:15 134
原创 刷题记录(Relative Sort Array)
Leecode: Relative Sort Array(JS解答)直接上代码: function relativeSortArray(arr1: number[], arr2: number[]): number[] { let count:number[] = new Array(1001).fill(0); for(let i = 0; i < arr1.length; i++){ count[arr1[i]]++; }
2021-04-14 10:51:30 90
原创 刷题记录(Reorganize String)
Leecode: Reorganize String(JS解答)解题思路:先用一个数组统计每个字母出现的次数,查看出现次数最高字母的次数,如果次数大于字符串长度的一半,则直接返回空字符串结果,因为不存在符合条件的答案下一步,先把出现次数最多的字母填在结果集的偶数位,填完之后选择下一字母继续填在后面的偶数位,如果超出字符串长度,则开始填奇数位上代码: function reorganizeString(S: string): string { let count:number[]
2021-04-13 11:44:22 84
原创 刷题记录(House Robber II)
Leecode: House Robber II (JS解答)解题思路:与此问题的前一个题目相比,此题改动的地方在于把链转改为环状,于是作为起始时,起始点有两种情况,偷与不偷,获取这两种情况下值最大的那个直接上代码,helper方法为动态规划思路方法: function rob(nums: number[]): number { if(nums.length == 0) return 0; if(nums.length == 1) return nums[0];
2021-04-01 18:13:16 70
原创 刷题记录(Maximal Square)
leecode: Maximal Square (JS解答)解题思路: 使用动态规划的思路解题,所以重点就是转移方程式:dpArr[i][j] = Math.min(dpArr[i-1][j-1] ,dpArr[i-1][j] ,dpArr[i][j-1]) + 1;在这里,dpArr[i][j]代表以matrix[i][j]为右下角的符合条件的正方形上代码: function maximalSquare(matrix: string[][]): number { if(
2021-04-01 18:06:16 78
原创 刷题记录(K-diff Pairs in an Array)
Leecode: K-diff Pairs in an Array(JS解答)直接上代码: function findPairs(nums: number[], k: number): number { if(k < 0) return 0; let saw = new Set(); let diff = new Set(); for(let num of nums){ if(saw.has(num+k)
2021-03-29 17:15:14 75
原创 刷题记录(Unique Binary Search Trees II)
Leecode: Unique Binary Search Trees II(JS解答) function generateTrees(n: number): Array<TreeNode | null> { let res: Array<TreeNode | null> = []; if(n == 0) return res; return helper(1, n); }; function helpe
2021-03-29 16:45:12 117
原创 刷题记录(Partition List)
Leecode: Partition List(JS解答)直接上代码: function partition(head: ListNode | null, x: number): ListNode | null { let minTemp: ListNode = new ListNode(0); let maxTemp: ListNode = new ListNode(0); let pointMax: ListNode = maxTemp;
2021-03-23 16:06:43 91
原创 刷题记录(Path Sum III)
Leecode:Path Sum III(JS解答)思路:贴一个力扣社区的解说图解,通俗易懂上代码:function pathSum(root: TreeNode | null, sum: number): number { let prefixMap:any = {}; let target:number = sum; prefixMap[0] = 1; return recur(root, 0); functi
2021-03-20 15:48:52 92
原创 刷题记录(Array Nesting)
Leecode:Array Nesting(JS解答)解题思路:按照题意,形成环状的结果集中的每一个元素只会出现在这个结果集的环里面,而不会出现其他结果集的环里面,于是遍历以每一个元素为起点的环的时候可以用一个布尔数组存储这些已经出现过的节点,因为它不会再出现在其他的环里面,从而提升性能上代码: function arrayNesting(nums: number[]): number { let visited:boolean[] = new Array(nums.length
2021-03-04 18:16:10 122 1
原创 刷题记录(Find All Duplicates in an Array)
Leecode:Find All Duplicates in an Array(JS解题)解题思路:用原数组来作为存储数值位置的数组,第一次遍历的时候进行取反操作,当操作过程中遇到负数,说明遇到了重复数值,压入结果集上代码: function findDuplicates(nums: number[]): number[] { let res:number[] = []; for(let i = 0; i < nums.length; i++){
2021-03-03 11:52:52 142
原创 刷题记录(Subarray Sum Equals K)
Leecode:Subarray Sum Equals K(JS解答)思路:采用哈希表加前缀和的思路来解题 function subarraySum(nums: number[], k: number): number { let mapobj:any = {}; let count = 0; let temp = 0; mapobj[0] = 1; for(let i = 0; i < nums.length
2021-03-03 11:47:07 118
原创 刷题记录(Find Minimum in Rotated Sorted Array II)
Leecode: Find Minimum in Rotated Sorted Array II(JS解答)思路:采用二分法,注意当出现重复元素时的处理,上代码: function findMin(nums: number[]): number { let start = 0; let end = nums.length-1; while (start < end){ let pivot = (start + end)
2021-02-24 18:08:26 73
原创 刷题记录(Triangle)
Leecode:Triangle(JS答题)思路:采用动态规划的思路来解题,状态转换是注意每层两端的状态转移特殊处理一下上代码: function minimumTotal(triangle: number[][]): number { let n:number = triangle.length; let f:number[][] = new Array(n); let res:number; for(let i = 0; i <
2021-02-19 16:43:15 76
原创 刷题记录(Trapping Rain Water)
Leecode:Trapping Rain Water(JS解答)思路一:动态规划,遍历1 - height.length-2之间的元素,每个元素向两端扩展 function trap(height: number[]): number { let leftHeight:number[] = new Array(height.length).fill(0); let rightHeight:number[] = new Array(height.length).fi
2021-02-18 18:12:06 78
原创 刷题记录(Subsets II)
Leecode:Subsets II(JS解答)思路:先对数组进行排序,让后采用回溯的办法求结果集合 function subsetsWithDup(nums: number[]): number[][] { let res:number[][] = []; nums.sort((a,b)=>a-b); helper(nums,0,[],res); return res }; function helper(nums:
2021-02-18 18:05:51 105
原创 刷题记录(Reorder List)
Leecode: Reorder List(JS解答)解题思路:用一个数组按顺序存储所有节点,让后用前后两个指针遍历数组,重构单向链表,上代码: function reorderList(head: ListNode | null): void { if(head == null || head.next == null) return; let nodeList:ListNode[] = []; while (head != null){
2021-02-16 18:22:21 186
原创 刷题记录(Combinations)
Leecode:Combinations(JS解答)直接上代码: function combine(n: number, k: number): number[][] { let res:number[][] = new Array(); let tempArr:number[] = new Array(); helper(res,[],1,n,k); return res; }; function helper(res:n
2021-02-16 17:45:38 116
原创 刷题记录(Combination Sum)
Leecode:Combination Sum(JS解答)思路:利用回溯算法 function combinationSum(candidates: number[], target: number): number[][] { let res:number[][] = new Array(); if(candidates.length == 0) return res; candidates.sort((a,b)=>a-b); //这里排序是
2021-02-02 17:17:34 92
原创 刷题记录(Remove Duplicates from Sorted Array II)
Leecode: Remove Duplicates from Sorted Array II(JS解答) function removeDuplicates(nums: number[]): number { let j = 1; let count = 1; for(let i = 1; i < nums.length; i++){ if(nums[i] == nums[i-1]){ c
2021-01-28 16:58:55 86
原创 刷题记录(Spiral Matrix II)
Leecode:Spiral Matrix II(JS解答)直接上代码: function generateMatrix(n: number): number[][] { let total:number = n * n; let l = 0; let r = n-1; let t = 0; let b = n-1; let res:number[][] = new Array(n); l
2021-01-28 16:54:53 98
原创 刷题记录(Search a 2D Matrix)
Leecode:Search a 2D Matrix(JS解答)思路:在二维数组里面找目标值是否存在,因为题目给定的条件,每一行的第一个数大于上一行的最后一个数,于是我们直接把它当成一个一位数组,让后用二分法进行解题: function searchMatrix(matrix: number[][], target: number): boolean { let totalNum:number = matrix.length * matrix[0].length; let
2021-01-28 16:50:27 101
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人