大纲:0204 完成的

✅ 657. 机器人能否返回原点

https://leetcode-cn.com/problems/robot-return-to-origin/

✅ 1299. 将每个元素替换为右侧最大元素

https://leetcode-cn.com/problems/replace-elements-with-greatest-element-on-right-side/

✅ 1051 高度检查器

https://leetcode-cn.com/problems/height-checker

✅ 728 自除数

https://leetcode-cn.com/problems/self-dividing-numbers

✅ 104 二叉树的最大深度

https://leetcode-cn.com/problems/maximum-depth-of-binary-tree


notes

✅1051 高度检查器

首先我们其实并不关心排序后得到的结果,我们想知道的只是在该位置上,与最小的值是否一致

题目中已经明确了值的范围 1 <= heights[i] <= 100

这是一个在固定范围内的输入,比如输入: [1,1,4,2,1,3]

输入中有 3 个 1,1 个 2,1 个 3 和 1 个 4,3 个 1 肯定会在前面,依次类推

所以,我们需要的仅仅只是计数而已

  • 错误的一次解答:

  • fix:

✅ 728 自除数

https://leetcode-cn.com/problems/self-dividing-numbers

brute

class Solution {
public List<Integer> selfDividingNumbers(int left, int right) {
List<Integer> ans = new ArrayList();
for (int n = left; n <= right; ++n) {
if (selfDividing(n)) ans.add(n);
}
return ans;
}
public boolean selfDividing(int n) {
for (char c: String.valueOf(n).toCharArray()) {
if (c == '0' || (n % (c - '0') > 0))
return false;
}
return true;
}
/*
Alternate implementation of selfDividing:
public boolean selfDividing(int n) {
int x = n;
while (x > 0) {
int d = x % 10;
x /= 10;
if (d == 0 || (n % d) > 0) return false;
}
return true;
*/
}

c解答:

//tt 主要是 temp%10 这个技巧,此可以 提取出 数中的每个位的数,
//tt eg: 128 依次提出: 8, 2, 1
//tt 总结就是 temp%10 这个技巧, 替代了 上述java 中的 `String.valueOf(n).toCharArray()` /**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* selfDividingNumbers(int left, int right, int* returnSize){
int cnt=0;
int*num=(int*)malloc(sizeof(int)*(right-left+1));
for(int i=left;i<=right;i++)
{
int temp=i;
int flag=0;
while(temp!=0)
{
if(temp%10==0||(i%(temp%10))!=0)
{
flag=1;
break;
}
temp/=10;
}
if(flag!=1)
num[cnt++]=i;
}
*returnSize=cnt;
return num;
}

java switch 语句

switch(expression){
case value :
//语句
break; //可选
case value :
//语句
break; //可选
//你可以有任意数量的case语句
default : //可选
//语句
}

java api: array 直接有 length 属性 ,不必:length()

✅104 二叉树 的最大高度,py java 对比

  • code:
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public int maxDepth(TreeNode root) {
        if(root == null) {
            return 0;
        }
        // BFS way, use Queue
        Queue<TreeNode> queue = new LinkedList<TreeNode>();
        queue.offer(root);
        int depth = 0;
        while(!queue.isEmpty()){
            depth += 1;
            int fixedQueueSize = queue.size();
            for(int i = 0; i < fixedQueueSize; i++){
                TreeNode node = queue.poll();
                if(node.left != null) {
                    queue.offer(node.left);
                }
                if(node.right != null){
                    queue.offer(node.right);
                } 
            }
            
        }
        return depth;
    }
}

JAVA数组的toString()方法不能直接输出数组内容

你需要: Arrays.toString(array) 

java Queueoffer, poll

LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用。

        //add()和remove()方法在失败的时候会抛出异常(不推荐)
Queue<String> queue = new LinkedList<String>();
//添加元素
queue.offer("a"); queue.poll()); //返回第一个元素,并在队列中删除
  • 纯递归似乎很好:

✅657机器人回到原点

class Solution {
public boolean judgeCircle(String moves) {
char [] allMovesSplited = moves.toCharArray();
int len = allMovesSplited.length;
int i = 0;
int x = 0;
int y = 0;
while(i < len) {
switch(allMovesSplited[i]) {
case 'U':
y++;
break;
case 'D':
y--;
break;
case 'L':
x--;
break;
case 'R':
x++;
break;
default:
break;
}
i++;
}
return x==0 && y==0;
}
}
//or
class Solution {
public boolean judgeCircle(String moves) {
int col = 0, row = 0;
for(char ch : moves.toCharArray()){
if(ch == 'U') row++;
else if(ch == 'D') row--;
else if(ch == 'L') col--;
else col++;
}
return col == 0 && row == 0;
}
}

✅1299 将每个元素替换为右侧最大元素(倒序来的思路很好)

class Solution {
public int[] replaceElements(int[] arr) {
//brute way
for(int i = 0; i < arr.length - 1; i++){
int maxInLatter = arr[i + 1];
for(int j = i + 1; j < arr.length; j++) {
if(arr[j] > maxInLatter){
//update the newest max
maxInLatter = arr[j];
}
}
arr[i] = maxInLatter;
}
//update the lastest one to -1;
arr[arr.length - 1]= -1;
return arr;
}
} //better class Solution {
public int[] replaceElements(int[] arr) {
int max = -1;
for(int i = arr.length - 1; i >= 0; i--){
int tmp = arr[i];
arr[i] = max;
if(tmp > max){
max = tmp;
}
}
return arr;
}
}

leetcode: 0204 完成的的更多相关文章

  1. 【LeetCode】LCP 07. 传递信息

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 BFS 日期 题目地址:https://leetcod ...

  2. 我为什么要写LeetCode的博客?

    # 增强学习成果 有一个研究成果,在学习中传授他人知识和讨论是最高效的做法,而看书则是最低效的做法(具体研究成果没找到地址).我写LeetCode博客主要目的是增强学习成果.当然,我也想出名,然而不知 ...

  3. LeetCode All in One 题目讲解汇总(持续更新中...)

    终于将LeetCode的免费题刷完了,真是漫长的第一遍啊,估计很多题都忘的差不多了,这次开个题目汇总贴,并附上每道题目的解题连接,方便之后查阅吧~ 477 Total Hamming Distance ...

  4. [LeetCode] Longest Substring with At Least K Repeating Characters 至少有K个重复字符的最长子字符串

    Find the length of the longest substring T of a given string (consists of lowercase letters only) su ...

  5. Leetcode 笔记 113 - Path Sum II

    题目链接:Path Sum II | LeetCode OJ Given a binary tree and a sum, find all root-to-leaf paths where each ...

  6. Leetcode 笔记 112 - Path Sum

    题目链接:Path Sum | LeetCode OJ Given a binary tree and a sum, determine if the tree has a root-to-leaf ...

  7. Leetcode 笔记 110 - Balanced Binary Tree

    题目链接:Balanced Binary Tree | LeetCode OJ Given a binary tree, determine if it is height-balanced. For ...

  8. Leetcode 笔记 100 - Same Tree

    题目链接:Same Tree | LeetCode OJ Given two binary trees, write a function to check if they are equal or ...

  9. Leetcode 笔记 99 - Recover Binary Search Tree

    题目链接:Recover Binary Search Tree | LeetCode OJ Two elements of a binary search tree (BST) are swapped ...

随机推荐

  1. selenium的元素定位方法-By

    如果在定位元素属性中包含了如ID等元素属性,那么在一个测试中,定位方法具体有哪几种,可以参考by模块中的By类,By的代码如下: class By(object): """ ...

  2. CentOS6.10 Nginx无法解析php文件

    一 .问题描述: 1). 前提: nginx 已经安装完毕,并且能够访问 2). 问题: 当访问 .php 文件时会默认下载,或者提示 “File not found.” 3). 本机环境 PHP 版 ...

  3. 程序设计实验:一个Python游戏,体验软件开发。

    小组在GitHub上找了一个Pygame实现的超级马里奥游戏.所以我的学习过程大致如下: 1.快速学习Python基础语法. 2.学习pygame并着手理解这个项目. 3.完成作业以及各种文档报告. ...

  4. CodeForces Gym 100213F Counterfeit Money

    CodeForces Gym题目页面传送门 有\(1\)个\(n1\times m1\)的字符矩阵\(a\)和\(1\)个\(n2\times m2\)的字符矩阵\(b\),求\(a,b\)的最大公共 ...

  5. 【网易官方】极客战记(codecombat)攻略-地牢-辐射光环

    关卡连接: https://codecombat.163.com/play/level/radiant-aura 骷髅,恐惧还是回避? 简介: 敬请期待! 默认代码 # 捡起发光石,让骷髅怪远离你一会 ...

  6. 吴裕雄 python 机器学习——支持向量机线性分类LinearSVC模型

    import numpy as np import matplotlib.pyplot as plt from sklearn import datasets, linear_model,svm fr ...

  7. vue入门基础知识点测试

    vue入门基础知识点测试 1.文本(值绑定){{var}}----控制<div></div>的值显示当前时间,且1秒更新一次.(可查阅 setinterval 函数,时间Dat ...

  8. jsp+servlet实现的验证登陆

    可以将业务逻辑处理和视图相分离,使用jsp界面表示视图,使用servlet处理业务逻辑 login.jsp <%@ page language="java" contentT ...

  9. InkWell容器 和 官方自带日期组件 和第三方 日期格式转换组件

    带点击事件的容器 InkWell( child: Text('时间'), onTap: _showTimePicker,),   Flutter 日期和时间戳 日期转化成时间戳: var now = ...

  10. Java - 闭包

    概述 简单介绍 闭包 1. 聚合关系 概述 常见的 类间关系 场景 类 A 主要类 持有 类B 的实例 有点行为, 需要 类 B 的介入 类 B 有自己的行为 A 会在某些时候调用 B 的行为 代码示 ...