#36 Valid Sudoku
来源:互联网 发布:qq等级升级软件 编辑:程序博客网 时间:2024/05/19 13:29
题目:
Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules.
The Sudoku board could be partially filled, where empty cells are filled with the character '.'
.
A partially filled sudoku which is valid.
Note:
A valid Sudoku board (partially filled) is not necessarily solvable. Only the filled cells need to be validated.
Note中写到,本题对Valid Sudoku的定义是行,列,3×3子格不能有重复数字,而不是一定有解。
思路也就很清楚了,依次判断即可。
public class Solution { public boolean isValidSudoku(char[][] board) { for(int i=0;i<9;i++){ //判断列 List<Character> list = new ArrayList<Character>(); for(int j=0;j<9;j++){ list.add(board[j][i]); } if(!isValid(list)){ return false; } //判断行 list = new ArrayList<Character>(); for(int j=0;j<9;j++){ list.add(board[i][j]); } if(!isValid(list)){ return false; } } //判断3×子格 for(int i=0;i<3;i++){ for(int j=0;j<3;j++){ List<Character> list = new ArrayList<Character>(); for(int k=0;k<3;k++){ for(int l=0;l<3;l++){ list.add(board[i*3+k][j*3+l]); } } if(!isValid(list)) return false; } } return true; } private boolean isValid(List<Character> list){ for(Character ch : list){ if(ch != '.') if(list.indexOf(ch) != list.lastIndexOf(ch))//List.IndexOf处理重复 return false; } return true; }}注:List.IndexOf返回List或它的一部分中某个值的第一个匹配项的从零开始的索引,List.IndexOf (T, Int32, Int32)。
用List.IndexOf获得值的索引并比较以判断是否有重复,很好的思路(原谅我少见多怪吧~~)。
0 0
- [36]Valid Sudoku
- [leetcode 36] Valid Sudoku
- leetcode 36: Valid Sudoku
- LeetCode(36) Valid Sudoku
- leetcode-36 Valid Sudoku
- Valid Sudoku - LeetCode 36
- LeetCode 36 Valid Sudoku
- LeetCode---(36) Valid Sudoku
- Leetcode 36 Valid Sudoku
- #36 Valid Sudoku
- Leetcode[36]-Valid Sudoku
- leetcode 36: Valid Sudoku
- 36Valid Sudoku
- Leetcode# 36 Valid Sudoku
- Leetcode#36||Valid Sudoku
- 36Valid Sudoku
- 36 Valid Sudoku
- leetcode-36 Valid Sudoku
- USB详解
- NEUQ 1397: 重建长城卷土重来
- 设计模式之 - 职责链模式
- 线程_多线程_同步机制
- J哥---------北京Android各招聘公司面试实战总结2
- #36 Valid Sudoku
- Sybase查询表结构的方法(类似于Oracle的Desc)
- Mybatis中javaType和jdbcType对应和CRUD例子
- C语言字符串函数详解
- ThinkPHP之文件上传
- Linux 的多线程编程的高效开发经验
- AURIX系列GTM模块中的PWM部分
- C++ double转string类型以及MFC控件简单用法
- 海马汽车经销商管理系统技术解析(九)预约单转维修工单