[LeetCode OJ]ZigZag Conversion && Valid Sudoku && String to Integer (atoi)
来源:互联网 发布:免费顶级域名注册 编辑:程序博客网 时间:2024/05/16 16:56
ZigZag Conversion
我的思路:
1、将一个锯齿状排列的字符串拉成一条线,输入到一个新的字符串中。
2、只要弄清楚循环的特征,算好nRows的变化给循环带来的变化,还是很容易完成。
string convert(string s, int nRows) { string ans; for (int i = 1; i <= nRows; i++) for (int j = i - 1; j < s.size(); ) { ans.push_back(s[j]); j += nRows == 1 ? 1 : i == nRows ? (nRows - 1) * 2 : (nRows - i) * 2; if (i != 1 && i != nRows) { if (j < s.size()) { ans.push_back(s[j]); } j += (nRows + i - 1) % nRows * 2; } } return ans; }
Valid Sudoku
我的思路:
1、判断数独的合理性,只要判断每一行,每一列,每一个9宫格是否满足1-9这9个数字只出现一次。
public: bool isValidSudoku(vector<vector<char> > &board) { for (int i = 0; i < 9; i++) { int judge[9] = {0}; for (int j = 0; j < 9; j++) if (board[i][j] != '.') judge[board[i][j] - '0' - 1]++; if (!isValidSudokuCore(judge)) return false; } for (int i = 0; i < 9; i++) { int judge[9] = {0}; for (int j = 0; j < 9; j++) if (board[j][i] != '.') judge[board[j][i] - '0' - 1]++; if (!isValidSudokuCore(judge)) return false; } for (int i = 0; i < 9; i += 3) { for (int j = 0; j < 9; j += 3) { int judge[9] = {0}; for (int h = i; h < i + 3; h++) for (int k = j; k < j + 3; k++) { if (board[k][h] != '.') judge[board[k][h] - '0' - 1]++; if (!isValidSudokuCore(judge)) return false; } } } return true; }private: bool isValidSudokuCore(int *judge) { int i; for (i = 0; i < 9 && *judge++ < 2; i++) ; if (i == 9) return true; else return false; }
别人思路:
1、我的需要扫描三遍数组,只用一遍扫描,然后开三个二维数组,设定bool判断,在对应的行列地方添上数独的值,如果再次出现就是非法数独。
String to Integer (atoi)
我的思路:
1、字符串转整数。题目要求,去掉前面的空格,如果第一个正负符号后面不是数字也是非法。大概是这么个意思。如果大于或者小于最小值,就返回最小最大值
2、笨方法,用了一个long long数据。
3、源码是没有考虑溢出的情况,自然也没有用到long long这个数据和32位的最大最小值比较。
int atoi(string str) { long long ans = 0; bool minus = false; int i = 0; while (str[i] == ' ') i++; if (str[i] == '-') { minus = true; i++; } else if (str[i] == '+') i++; for ( ; i < str.size() && isdigit(str[i]) && ans < 2147483648; i++) ans = ans * 10 + str[i] - '0'; if (minus) ans = -ans; if (ans < -2147483648) return -2147483648; else if (ans > 2147483647) return 2147483647; return ans; }
0 0
- [LeetCode OJ]ZigZag Conversion && Valid Sudoku && String to Integer (atoi)
- LeetCode OJ:String to Integer (atoi)
- LeetCode OJ - String to Integer (atoi)
- [LeetCode OJ][008]String to Integer (atoi)
- LeetCode OJ String to Integer (atoi)
- <LeetCode OJ> 8. String to Integer (atoi)
- LeetCode OJ - String to Integer (atoi)
- LeetCode OJ 8.String to Integer (atoi)
- leetCode OJ 8. String to Integer (atoi)
- LeetCode OJ算法题(八):String to Integer (atoi)
- LeetCode OJ 之 String to Integer (atoi字符串转数字)
- LeetCode OJ 8 String to Integer (atoi) [Medium]
- LeetCode:String to Integer (atoi)
- LeetCode: String to Integer (atoi)
- LeetCode String to Integer(atoi)
- LeetCode :String to Integer (atoi)
- Leetcode: String to Integer (atoi)
- Leetcode : String to Integer (atoi)
- gdb 使用笔记
- Stl各容器对比
- BP Neural Networks初步理解
- spring+springMVC,声明式事务失效,原因以及解决办法
- Ioc-Unity整理
- [LeetCode OJ]ZigZag Conversion && Valid Sudoku && String to Integer (atoi)
- [BZOJ 1043][HAOI 2008]下落的圆盘(计算几何)
- ubuntu下ftp常识用法
- 示例解读Java的跨平台原理
- Apache_Maven基本配置和使用
- Swift语法基础:9 - Swift的字面量, 类型转换, 类型别名
- Java的数据库事务处理
- 安装版Tomcat的使用
- JAVA ThreadLocal对象浅析