您的位置:首页 > 娱乐 > 明星 > 如何开展网络营销活动_银川网站建设多少钱_优化百度seo技术搜索引擎_网络推广策划

如何开展网络营销活动_银川网站建设多少钱_优化百度seo技术搜索引擎_网络推广策划

2025/1/8 13:19:56 来源:https://blog.csdn.net/weixin_44061648/article/details/144360948  浏览:    关键词:如何开展网络营销活动_银川网站建设多少钱_优化百度seo技术搜索引擎_网络推广策划
如何开展网络营销活动_银川网站建设多少钱_优化百度seo技术搜索引擎_网络推广策划

leetcode每日一题(20241209)和补一下 (20241208)的这天的

(20241208): 782. 变为棋盘 题目描述:

一个 n x n 的二维网络 board 仅由 01 组成 。每次移动,你能交换任意两列或是两行的位置。
返回 将这个矩阵变为  “棋盘”  所需的最小移动次数 。如果不存在可行的变换,输出 -1。
“棋盘” 是指任意一格的上下左右四个方向的值均与本身不同的矩阵。

这题目有好多潜规则,如果没碰到过是真的不好做,推荐看官方解析,很详细,下面就是我按照官网解析写的,请看代码(有点长):

class Solution {public int movesToChessboard(int[][] board) {//按照官网解题步骤走,不管行行或者列只有两种,取第一行和第一列作为模板int len=board.length;int[] maskCol=new int[len];int[] reverseMaskCol=new int[len];int[] maskRow=new int[len];int[] reverseMaskRow=new int[len];for(int i=0;i<len;i++){maskCol[i]=board[i][0];maskRow[i]=board[0][i];}for(int i=0;i<len;i++){reverseMaskCol[i]=(maskCol[i]+1)%2;reverseMaskRow[i]=(maskRow[i]+1)%2;}int rowCount=0; //记录行和模板一样的个数int colCount=0; //记录列和模板一样的个数// 检测每一行和每一列是不是只是和模板或者反向模板一样for(int i=0;i<len;i++){// 判断列boolean colFlag=true;boolean reverseColFlag=true;for(int j=0;j<len;j++){if(board[j][i]!=maskCol[j]){colFlag=false;break;}}for(int j=0;j<len;j++){if(board[j][i]!=reverseMaskCol[j]){reverseColFlag=false;break;}}if(colFlag||reverseColFlag){if(colFlag) colCount++;}else{return -1;}// 判断行boolean rowFlag=true;boolean reverseRowFlag=true;for(int j=0;j<len;j++){if(board[i][j]!=maskRow[j]){rowFlag=false;break;}}for(int j=0;j<len;j++){if(board[i][j]!=reverseMaskRow[j]){reverseRowFlag=false;break;}}if(rowFlag||reverseRowFlag){if(rowFlag) rowCount++;}else{return -1;}}// 获取最小移动次数int rowMoves=getMoves(maskRow,rowCount,len);int colMoves=getMoves(maskCol,colCount,len);return (rowMoves == -1 || colMoves == -1) ? -1 : (rowMoves + colMoves); }public int getMoves(int[] mask,int count,int n){//求出模板中1或者0的个数(1的个数)int oneNumCount=0;for(int i=0;i<n;i++){oneNumCount+=mask[i];}//偶数矩阵if(n%2==0){if(oneNumCount*2!=n||count*2!=n){return -1;}// 从1 开始 判断和模板有多少差异int count1=0;int temp1=1;int count0=0;int temp0=0;for(int i=0;i<n;i++){if(mask[i]!=(temp1%2)){count1++;}if(mask[i]!=(temp0%2)){count0++;}temp1++;temp0++;}return Math.min(count0,count1)/2; //返回结果要除2 因为挪动一次可以替换两个}else{if(Math.abs(oneNumCount*2-n)!=1||Math.abs(count*2-n)!=1){return -1;}int count0=0;int temp0=1;if(oneNumCount==n/2){// 只能是 0 开头的temp0=0; }for(int i=0;i<n;i++){if(mask[i]!=(temp0%2)){count0++;}temp0++;}return count0/2; //返回结果要除2 因为挪动一次可以替换两个}}
}

(20241209): 1812. 判断国际象棋棋盘中一个格子的颜色 题目描述:

给你一个坐标 coordinates ,它是一个字符串,表示国际象棋棋盘中一个格子的坐标。下图是国际象棋棋盘示意图。

在这里插入图片描述
和之前 在这里插入代码片20241203 号每日一题一模一样,就不多说了看代码:

class Solution {public boolean squareIsWhite(String coordinates) {return getColor(coordinates);}public boolean getColor(String coordinate){int col=coordinate.charAt(0)-'a';int row=coordinate.charAt(1)-'0';if(row%2==0){return col%2==0?true:false;}else{return col%2==0?false:true;}}
}

加油!!!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com