- 博客(174)
- 收藏
- 关注
原创 flutter子widget向上传递状态(状态跟踪)
或者通过接收controller来传递信息,例如textfield的controller.text。一般做法是接收一个回调,在每一次状态改变的时候通过回调向上传递状态。而不是主动向上传递。
2023-05-21 17:03:46 226
原创 content-box 和 border-box
content-box告诉浏览器 width的数值只是content部分的宽度border-box告诉浏览器 width包括padding和border
2022-05-16 04:27:09 277
原创 js数组includes,map,filter,reduce
a = [1,2,3,4,5,6,7,8]//filtera.filter((val)=>{ return val>5})//output[6, 7, 8]//mapa.map((val)=>{ return val+1})//output [2, 3, 4, 5, 6, 7, 8, 9]//includesa.includes(3)//output true//reducea.reduce((a,b) =>a+b)//outp..
2022-05-15 12:49:35 269
原创 使用Promise避免回调地狱
jquery的ajax get等一众方法会返回一个Promise对象可以把调用api之后的回调逻辑写在promise的then(成功返回,对应resolve)和catch(错误返回,对应reject)两个函数里function getfoo(){ return $.ajax({url:"baidu.com"})}function getfuu(){ return $.ajax({url:"baidu.com"})} getfoo().then(value
2022-05-15 12:17:35 236
原创 js里三个点 ... 的用法
简单来说就是脱掉元素的最外面一层包装a = "foo"console.log([...a])//输出["f","o","o"]var number = [1,2,3,4,5,6]console.log(...number) //输出1 2 3 4 5 6可以用来复制元素var obj1 = {name:'chuichui'}var obj2 ={...arr}讲的比较详细的一篇:JavaScript中三个点代表什么-js教程-PHP中文网...
2022-05-15 12:03:36 727
原创 Android Picasso 无法加载图片
1 可能是没有授予网络权限在AndroidManifest.xml文件的<manifest></manifest>里面加入 <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />2 可以打开Picasso自带的log
2022-04-20 16:59:17 2952
原创 Angular 项目学习总结
用Angular作前端开发框架,nodejs做后端(angular必须基于nodejs)几个关键的文件夹:node_modules/: 通过node 的npm(软件包管理系统)安装的angular核心包和第三方包src/:源代码文件夹src/app/: app 组件文件夹src/index.html:开始编译的根html文件.gcloudignore: 在GCP上部署时需要的文件,记录了不需要上传的文件夹(如node_modules)angular.json: angular配置
2022-04-04 08:18:06 521
原创 LeetCode 316. Remove Duplicate Letters
有点奇怪的一道题 题意是将字符串s内出现的每种字母只保留一个 并要求字典序最小有点类似优先队列的思想,遍历s的同时维护一个结果串ans,当出现未访问过的字符c时,从后往前查看结果串的字符,如果结果串ans当前的字符cc,满足cc>c 并且原串s后面还会出现cc,就把cc删除。从后往前删除所有这样的cc后,把c添加到ans的末尾。最后ans就是答案class Solution { public String removeDuplicateLetters(String s) {
2022-01-13 16:20:44 3945
原创 LeetCode 264. Ugly Number II
找出第n个ugly number(因数只有2 3 5)代码写得很巧妙 学到了因为每一轮都会将cur与2 3 5 分别判断一遍,所以不会有重复值class Solution { public int nthUglyNumber(int n) { ArrayList<Integer> ans = new ArrayList<>(); ans.add(1); int i2 = 0, i3 = 0, i5 = 0;
2022-01-07 04:17:23 168
原创 LeetCode 275. H-Index II
二分法查找最大的value 使得大于等于value的值有value个设数组长度为n,如果当前二分到i,如果从i到n的数组片段中,nums[i] > n-i 说明该value比i小,就往下查找,如果nums[i] < n-i 说明该value至少比nums[i]大 向上找,直到找到最大的nums[i] 满足 nums[i] > n - i, 答案为n-iclass Solution { public int hIndex(int[] citations) {
2022-01-07 03:56:36 120
原创 201. Bitwise AND of Numbers Range
可以观察二进制的规律,第0位每一个数变一次,第1位每2个数变一次,第2位没四个数变一次。可以推出来如果如果想让第i位所有数全为1,需要range<=2^i, 并且左右边界在该位置都是1class Solution {public: int rangeBitwiseAnd(int left, int right) { int dig = 0; int ans = 0; long n = (long)right-left +1;
2022-01-05 11:42:36 164
原创 LeetCode 73. Set Matrix Zeroes
用matrix[0][j] 记录第j列是否为0用matrix[i][0]记录第i行是否为0因为在0 0 位置有重复,所以新开个变量记录第0行或者第0列更新的时候先更新从第1行开始和从第1列开始妙啊 哭了class Solution { public void setZeroes(int[][] matrix) { int m = matrix.length; int n = matrix[0].length; int flag =
2021-11-29 17:28:56 197
原创 LeetCode 81. Search in Rotated Sorted Array II
二分搜索会有问题,因为数组中有重复的值所以在判断时,如果nums[l] == nums[r] l+=1
2021-11-27 12:02:35 224
原创 LeetCode 45. Jump Game II
双指针 On遍历一遍就好找出当前步数能到达的最远距离,直到距离覆盖了目标点class Solution { public int jump(int[] nums) { int n = nums.length; int l = 0; int r = 0; int ans = 0; while(l<=r){ if(r>=n-1) return an
2021-11-26 11:01:32 2999
原创 LeetCode 223 223. Rectangle Area
计算两个矩形union的面积若相离 直接返回面积之和若相交或包含,需要减去相交的面积相交的面积 = (最小上界-最大下界)* (最小右界-最大左界)class Solution { public int computeArea(int ax1, int ay1, int ax2, int ay2, int bx1, int by1, int bx2, int by2) { int ans = (ay2-ay1)*(ax2-ax1) + (by2-by1)*(bx2-
2021-11-18 05:50:22 247
原创 Java 字符串内部排序
char []c = str.toCharArray();Arrays.sort(c);String s = String.copyValueOf(c);
2021-10-30 03:28:41 602
原创 49. Group Anagrams
对每个字符串内部按字母排序,如果是相同组成的字符串,排序后的串应该是相同的所以可以用这个排序后的串当做key来hashclass Solution { public List<List<String>> groupAnagrams(String[] strs) { List<List<String>> ans = new ArrayList<>(); int n = strs.length;
2021-10-30 03:26:51 128
原创 LeetCode 135. Candy
找出每个child分别相对于左边和右边的最长递增序列长度,取两者最大值就是他最后应该获得的糖数class Solution { public int candy(int[] ratings) { int ans = 0; int n = ratings.length; int []left = new int[n]; int []right = new int[n]; left[0] = 1; ri
2021-10-29 04:18:47 3091
原创 LeetCode 767. Reorganize String
给定字符串s,把他变成相邻两个字母不相同的形状先变成相邻字符聚在一起的形状,然后重新填装,先填偶数index,再填奇数index丑陋代码class Solution { public String reorganizeString(String s) { int []cnt = new int[26]; int n = s.length(); for(int i=0;i<n;i++) cnt[s.charAt
2021-10-29 03:14:34 100
原创 LeetCode 1547. Minimum Cost to Cut a Stick
dp[i][j] 代表从第i个点到第j个点的尺子段被切断需要的最小cost从小到大枚举i到j的长度class Solution { public int minCost(int n, int[] cuts) { int[] newCuts = new int[cuts.length + 2]; newCuts[0] = 0; for(int i=0;i<cuts.length;i++){ newCuts[i+1]
2021-09-30 10:20:36 110
原创 LeetCode 116. Populating Next Right Pointers in Each Node
前提:是完美二叉树用层次遍历的方法,但是因为上一层已经有了next节点,所以就不需要队列来维护顺序,直接判断next是否为空和父子节点的关系,就能确定下一个节点的位置复杂度为O(n)/*// Definition for a Node.class Node { public int val; public Node left; public Node right; public Node next; public Node() {} ...
2021-09-24 12:05:40 201
原创 Leetcode 146. LRU Cache
两种做法:1 双向队列+HashMap2 直接用java的LinkedHashMap,同时重写它的removeEldestEntry逻辑,当容量超过capacity时移除class LRUCache {lruLinkedHashMap <Integer,Integer>map = new lruLinkedHashMap();int cap; private class lruLinkedHashMap<K,V> extends LinkedHashMa
2021-09-24 11:07:35 80
原创 Java String Integer互相转
String 转 Integer:Integer.parseInt(str);Integer.valueOf(str);Integer 转 String:Integer.toString(num);String.valueOf(num);
2021-09-24 09:50:03 108
原创 Java 先序 中序 后序的非递归
先序:直接用stack遍历,vis当前元素后按顺序压栈右儿子,压栈左儿子中序:压栈当前节点后接着压栈左儿子,当左儿子为空时vis栈顶元素,压栈栈顶元素的右儿子 Stack<TreeNode> s = new Stack<>(); TreeNode head = root; while(!s.empty() || head!=null){ if(head!=null){ s.
2021-09-22 14:18:37 126
原创 LeetCode 1382. Balance a Binary Search Tree
将一颗二叉搜索树变平衡二叉搜索树的特点:不管结构如何,中序遍历序列不变So 先得到中序序列,再构建平衡树/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; }
2021-09-22 14:01:04 117
原创 Leetcode 279 Perfect Squares
每条边距离为1的Dij,求从n到0的距离class Solution { public int numSquares(int n) { PriorityQueue<Pair<Integer,Integer>> q = new PriorityQueue<Pair<Integer,Integer>>((a,b) -> a.getValue() - b.getValue());
2021-09-22 13:18:52 118
原创 Java HashMap 可以存储null
HashMap<Node,Node> = map new HashMap();map.put(null,null);这样写是可以的
2021-09-15 02:28:53 2535
原创 LeetCode 329. Longest Increasing Path in a Matrix
记忆化dfs 用dp数组保存每次dfs的结果,下次直接拿出来用class Solution { int [][]dp = new int[210][210]; int [][] ma; int []ofx = {1,-1,0,0}; int []ofy = {0,0,1,-1}; int n,m; int ans = 0 ; public int longestIncreasingPath(int[][] matrix) { n
2021-09-10 13:42:58 89
原创 Java 优先队列PriorityQueue排序Pair
用lambda定义pair排序逻辑PriorityQueue<Pair<Integer,Integer>> q = new PriorityQueue<Pair<Integer,Integer>>((a,b) -> a.getValue() - b.getValue());这里(a,b) -> a.getValue() - b.getValue() 如果的逻辑是 返回值>0 则a大,否则b大优先队列默认...
2021-09-10 13:14:30 1361
原创 LeetCode 973. K Closest Points to Origin 优先队列
优先队列排序最后取出最小的k个class Solution { public int[][] kClosest(int[][] points, int k) { PriorityQueue<Pair<Integer,Integer>> q = new PriorityQueue<Pair<Integer,Integer>>((a,b) -> a.getValue() - b.getValue());
2021-09-10 13:10:28 90
原创 LeetCode 124. Binary Tree Maximum Path Sum
要注意两个逻辑:递归更新ans的值① 跟最终结果ans比大小时,要用“穿过当前节点的路径”,也就是左右子树可以一起选②递归返回上一层时,要选左右子树最多只能选一个,或者不选。当组成的最大值为负数时直接返回0/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNod
2021-09-09 10:23:34 99
原创 Java 栈的使用
创建: Stack<Integer> s = new Stack<Integer>();入栈:s.push(tem);弹栈:s.pop();查看栈顶元素:s.peek();
2021-09-09 09:58:24 109
原创 LeetCode 36. Exclusive Time of Functions
用栈模拟cpu的任务队列注意:开始时间给的是某一秒钟的开始,结束时间给的是某一秒钟的结尾class Solution { public int[] exclusiveTime(int n, List<String> logs) { Stack<Pair<Integer,Integer>> cpu = new Stack<>(); int len = logs.size(); String []t
2021-09-09 09:56:02 102
原创 LeetCode 29. Divide Two Integers 注意负数的移位运算
因为负数的范围更大,所以用负数来表示商,同时特判商为-2^32的情况用移位和减法来循环模拟除法,最多计算32次PS:负数右移一位时负奇数 和除以二结果不同(因为要除以二截断,但是和正数截断的方向不一致)负偶数和除以二结果相同所以注意这点class Solution { public int divide(int dividend, int divisor) { int r = (1<<30)-1; r = r+r+1; .
2021-09-09 05:29:30 349
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人