概述
LC73. 矩阵置零
//采用一个标记数组的方式记录行和列。
class Solution {
public void setZeroes(int[][] matrix) {
int m = matrix.length,n = matrix[0].length;
boolean[] raw = new boolean[m];
boolean[] col = new boolean[n];
for(int i = 0;i < m;i++){
for(int j = 0;j < n;j++){
if(matrix[i][j] == 0){
raw[i] = col[j] = true;
}
}
}
for(int i = 0;i < m;i++){
for(int j = 0;j < n;j++){
if(raw[i] || col[j]){
matrix[i][j] = 0;
}
}
}
}
}
LC剑指 Offer 46. 把数字翻译成字符串
//有点像青蛙跳台阶的题型,找到递推公式就是 f(i) = f(i - 1) + f(i - 2),需要查看的是前两项是否能够成为一个字母。
class Solution {
public int translateNum(int num) {
String str = String.valueOf(num);
int p = 0,q = 0,r = 1;
for(int i = 0;i < str.length();i++){
p = q;
q = r;
r = 0;
r += q;
if(i == 0){
continue;
}
String pre = str.substring(i - 1,i + 1);
if(pre.compareTo("25") <= 0 && pre.compareTo("10") >= 0){
r += p;
}
}
return r;
}
}
LC503. 下一个更大元素 II
//题目的意思就是一个循环数组当中,找出下一个更大的数字并且在对应结果的下标处置换成对应下标的nums的值
class Solution {
public int[] nextGreaterElements(int[] nums) {
int n = nums.length;
int[] res = new int[n];
Arrays.fill(res,-1);
Deque<Integer> stack = new LinkedList();
for(int i = 0;i < 2 * n - 1;i++){
while(!stack.isEmpty() && nums[i % n] > nums[stack.peek()]){
res[stack.pop()] = nums[i % n];
}
stack.push(i % n);
}
return res;
}
}
最后
以上就是舒心太阳为你收集整理的CodeTop每日系列三题------------------2021.1.10的全部内容,希望文章能够帮你解决CodeTop每日系列三题------------------2021.1.10所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复