1,坐标系与数学不同,x轴向下,y轴向右


2.案例:螺旋矩阵
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
- class Solution {
- public List
spiralOrder(int[][] matrix) { - List
res=new ArrayList(); - int n=matrix.length;//有多少行
- if(n==0) return res;
- int m=matrix[0].length;//列
-
- //设定方向向量,要顺时针,右下左上
- int dx[]={0,1,0,-1},dy[]={1,0,-1,0};
- //判断当前的数组有没有被使用,也就是有没有加到答案数组中
- boolean st[][]=new boolean[n][m];
-
- //x和y表示的是当前循环到了哪个坐标,dir表示当前的方向
- for(int i=0,x=0,y=0,dir=0;i
- res.add(matrix[x][y]);//将数字加入答案数组中
- st[x][y]=true;//说明当前数字已经被使用
- int a=x+dx[dir],b=y+dy[dir];
- //循环方向
- for(int j=0;j<4;j++){
-
- if(a<0||a>=n||b<0||b>=m||st[a][b]){
- dir=(dir+1)%4;
- a=x+dx[dir];
- b=y+dy[dir];
-
- }
- }
- x=a;
- y=b;
- }
- return res;
- }
- }
位运算
注意,位运算的优先级比加减乘除低,所以加括号


在[a,b] 取a` b`
a` & b`,得到c`,此时那c去和[a,b]所有数&结果全是c
在精简一下,如果a=01001,b=11101,那a`=01111,b`=10000,c=00000ans就是0
也就是说只要最高位不同ans一定为0,再推广,从高位往地位看,只要高位不全是1,直接为0
- class Solution {
- public int rangeBitwiseAnd(int left, int right) {
- int res=0;
- for(int i=30;i>=0;i--){
- if((left>>i&1)!=(right>>i&1)) break;//取第i位判断是否相等,不相等答案就是0
- if((left>>i&1)==1) res+=1<
- }
- return res;
- }
- }
-
相关阅读:
Docker 镜像构建之 Dockerfile
python 比较图像相似度实战
Spring Security 使用JSON格式参数登录的两种方式
VSCode使用插件Github Copilot进行AI编程
ABP中的数据过滤器
174. 地下城游戏 -- 动规
题目 1055: 二级C语言-进制转换
手机基带芯片往事
Covalent Network(CQT)构建 Web3 最大的结构化数据集,开拓AI、安全性和数据质量的融合
权限系统设计
-
原文地址:https://blog.csdn.net/yiyeyeshenlan/article/details/136219207