【LeetCode从零单排】No36 Valid Sudoku

题目

判断数独是否成立的一道题,看的是某大神的答案,写的太漂亮了。

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.

代码

public class Solution {
	public boolean isValidSudoku(char[][] board) {
	    int count = 9;
	    int blockWidth = 3;
	    for (int i=0; i<count; i++) {
	        boolean[] rowExist = new boolean[count+1];
	        boolean[] colExist = new boolean[count+1];
	        boolean[] matrixExist = new boolean[count+1];
	        for (int j=0; j<count; j++) {
	            int rowNum = board[i][j] == ‘.‘ ? -1 : board[i][j] - ‘0‘;
	            int colNum = board[j][i] == ‘.‘ ? -1 : board[j][i] - ‘0‘;
	            int mtxRowIdx = 3*(i/3);
	            int mtxColIdx = 3*(i%3);
	            int matrixNum = board[mtxRowIdx + j/3][mtxColIdx + j%3] == ‘.‘ ?
	                                -1 : board[mtxRowIdx + j/3][mtxColIdx + j%3] - ‘0‘;
	            if (rowNum > 0 && rowExist[rowNum] ||
	                colNum > 0 && colExist[colNum] ||
	                matrixNum > 0 && matrixExist[matrixNum]) {
	                return false;
	            }
	            if (rowNum > 0)
	                rowExist[rowNum] = true;
	            if (colNum > 0)
	                colExist[colNum] = true;
	            if (matrixNum > 0)
	                matrixExist[matrixNum] = true;
	        }
	    }
	    return true;
	}}

代码下载:https://github.com/jimenbian/GarvinLeetCode

/********************************

* 本文来自博客  “李博Garvin“

* 转载请标明出处:http://blog.csdn.net/buptgshengod

******************************************/

时间: 2024-10-28 03:51:59

【LeetCode从零单排】No36 Valid Sudoku的相关文章

【LeetCode从零单排】No118 Pascal&#39;s Triangle

题目 Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5,Return [ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ] 代码 public class Solution { public List<List<Integer>> generate(int numRows) { List<List

LeetCode之“散列表”:Valid Sudoku

题目链接 题目要求: 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

【leetcode刷题笔记】Valid Sudoku

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

【LeetCode从零单排】No70.ClimbingStairs

题目 爬楼梯问题,这是一道很有趣的问题.首先看题目: You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top? 这道题一共有三个方法实现(我想到的): 1.递归(对应代码climbStairs) 如果楼梯有n层,我们回退到n-

【LeetCode从零单排】No19.RemoveNthNodeFromEndofList

题目 这是道链表的简单应用题目,删除从结尾数第n个节点. Given a linked list, remove the nth node from the end of list and return its head. For example, Given linked list: 1->2->3->4->5, and n = 2. After removing the second node from the end, the linked list becomes 1-&g

【LeetCode从零单排】No20.ValidParentheses

题目 Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid. The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]&q

【LeetCode从零单排】No26.Remove Duplicates from Sorted Array

题目 题目要求:去除sort int数组中的重复项. Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length. Do not allocate extra space for another array, you must do this in place with constant memory. For exam

【LeetCode从零单排】No.7 Reverse Integer

前话 今天开始励志刷一下leetcode上面的题目(还好这个网站没被TG和谐).从easy的开始,数一下差不多有40道,争取两个月搞定. 题目 没想到做的第一道题目,虽然看似简单,却费了很大周折. 题目如下: Reverse digits of an integer. Example1: x = 123, return 321Example2: x = -123, return -321 刚看到这道题,首先蹦出的想法是把整数转换为字符串,然后前后位置换下再转回int型,实事证明这样是不可取的,因

【LeetCode从零单排】No 3 Longest Substring Without Repeating Characters

题目 Given a string, find the length of the longest substring without repeating characters. For example, the longest substring without repeating letters for "abcabcbb" is "abc", which the length is 3. For "bbbbb" the longest su