大纲: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. linux虚拟机安装jenkins及maven/jdk配置

    一.jenkins安装 (1)tomcat下载,下载地址:https://tomcat.apache.org 选择对应的版本,以下以新版的tomcat 9.0版本为例 下载zip包 (2)jenkin ...

  2. Word2010如何从指定页设置页码

    光标定位:将光标定位于需要开始编页码的页首位置.   插入分隔符的”下一页”:选择“页面布局—>分隔符—> 下一页”插入.   插入页码:选择“插入—>页码—> 页面底端”,选 ...

  3. Swagger-ui接口文档

    参考地址 https://github.com/swagger-api/swagger-core/wiki/Annotations-1.5.X#quick-annotation-overview   ...

  4. 如何开通linux机器的对外访问端口

    1.先查看是否已经开通 2.没有开通,去linux机器查看防火墙,确实没有开通 3.修改防火墙 vim /etc/sysconfig/iptables 4.重启防火墙之后重新查看已经可以看到8000端 ...

  5. FPGA-HPS

    最近在做DE1的图像方面实验,用到了HPS,所以简要谈一谈什么是HPS. 由图可知,DE1的板子就是有fpga+hps组成的: 参考自:http://bbs.eeworld.com.cn/thread ...

  6. 在MyEclipse2017中配置JDK和Tomcat8.5

    在MyEclipse2017中配置Tomcat8.5: 首先,确保你已安装好JDK.Tomcat等 1.启动MyEclipse后,点击菜单栏的"Window": 2.为MyEcli ...

  7. 【 Struts2 配置】Struts2基本搭建

    struts.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBL ...

  8. 公告 & 留言板 & 随想录

    欢迎dalao在评论区留言 \(Q \omega Q\) 公告部分: 博客文章的更新一般被放在周末 当然还是可能会咕 自从改了博客的主题之后,文章中的引用好像都会显示出一堆乱码. 由于之前写过的博文不 ...

  9. 手码两万余字,SpringMVC 包教包会

    1. SpringMVC 简介 1.1 Spring Web MVC是什么 Spring Web MVC 是一种基于 Java 的实现了 Web MVC 设计模式的请求驱动类型的轻量级 Web 框架, ...

  10. 201771010135 杨蓉庆《面对对象程序设计(java)》第十六周学习总结

    1.实验目的与要求 (1) 掌握线程概念: (2) 掌握线程创建的两种技术: (3) 理解和掌握线程的优先级属性及调度方法: (4) 掌握线程同步的概念及实现技术: 一.理论知识 ⚫ 线程的概念 (1 ...