旋转数组的最小数字
class Solution {
public int minArray(int[] numbers) {
int res = Integer.MAX_VALUE;
for(int i = 0; i < numbers.length; i++) {
if(res > numbers[i])res = numbers[i];
}
return res;
}
}
第一个只出现一次的字符
class Solution {
public char firstUniqChar(String s) {
int[] st = new int[30];
char res = ' ';
char[] c = s.toCharArray();
for(int i = 0; i < c.length; i++) {
st[c[i] - 'a'] ++;
}
for(int i = 0; i < c.length; i++) {
if(st[c[i] - 'a'] < 2) {
res = c[i];
break;
}
}
return res;
}
}
二维数组中的查找
从坐下到右上扫描
class Solution {
public boolean findNumberIn2DArray(int[][] matrix, int target) {
int i = matrix.length - 1, j = 0;
while(i >= 0 && j < matrix[0].length)
{
if(matrix[i][j] > target) i--;
else if(matrix[i][j] < target) j++;
else return true;
}
return false;
}
}
从上到下打印二叉树
class Solution {
public int[] levelOrder(TreeNode root) {
if(root == null)
return new int[] {};
List<Integer> res = new ArrayList<Integer>();
Queue<TreeNode> que = new LinkedList<TreeNode>();
que.add(root);
while(!que.isEmpty())
{
//计算队列的大小也即有多少个孩子
int n = que.size();
for(int i = 0; i < n; i ++)
{
TreeNode temp = que.poll();
res.add(temp.val);
if(temp.left != null)
que.add(temp.left);
if(temp.right != null)
que.add(temp.right);
}
}
int[] ans = new int[res.size()];
for(int i = 0; i < res.size(); i ++)
ans[i] = res.get(i);
return ans;
}
}
从上到下打印二叉树 II
cpp版:
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
vector<vector<int>> res;
queue<TreeNode*> q;
if(root != NULL)q.push(root);
while(q.size()) {
int n = q.size();
vector<int> v;
for(int i = 0; i < n; i++) {
TreeNode* t = q.front();
q.pop();
v.push_back(t->val);
if(t -> left != NULL) q.push(t -> left);
if(t -> right != NULL) q.push(t -> right);
}
res.push_back(v);
}
return res;
}
};
Java版:
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
Queue<TreeNode> q = new LinkedList<>();
List<List<Integer>> res = new ArrayList<>();
if(root != null) q.add(root);
while(!q.isEmpty()) {
List<Integer> tmp = new ArrayList<>();
for(int i = q.size(); i > 0; i--) {
TreeNode node = q.poll();
tmp.add(node.val);
if(node.left != null) q.add(node.left);
if(node.right != null) q.add(node.right);
}
res.add(tmp);
}
return res;
}
}