首页 > 其他分享 >11.21打卡

11.21打卡

时间:2023-11-21 21:55:23浏览次数:42  
标签:TreeNode cur val int 11.21 List 打卡 root

1. 复制IP (93)

有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 '.' 分隔。

  • 例如:"0.1.2.201" 和 "192.168.1.1" 是 有效 IP 地址,但是 "0.011.255.245""192.168.1.312" 和 "[email protected]" 是 无效 IP 地址。

给定一个只包含数字的字符串 s ,用以表示一个 IP 地址,返回所有可能的有效 IP 地址,这些地址可以通过在 s 中插入 '.' 来形成。你 不能 重新排序或删除 s 中的任何数字。你可以按 任何 顺序返回答案。

class Solution {
    List<String> res = new ArrayList<>();
    char[] cs;
    
    public List<String> restoreIpAddresses(String s) {
        cs = s.toCharArray();
        dfsrestoreIpAddresses(0,cs.length,new ArrayList<>());
        return res;
        
    }
    void dfsrestoreIpAddresses(int idx,int n, List<Integer> cur){
        if(cur.size()>4)
            return;
            //idx 作为当前划分数字的左端点
        if(idx==n){
            if(cur.size()==4){
                //cur 的则是代表子部分的具体划分方案
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < 4; i++) {
                    sb.append(cur.get(i)).append('.');
                }
                res.add(sb.substring(0,sb.length()-1));
            }
        }else {
            for (int i = idx; i <n ; i++) {
                int t =0;
                for (int j = idx; j <=i ; j++) {
                    t=t*10+(cs[j]-'0'); //排成数字
                }
                if(cs[idx]=='0'&&i!=idx) // 025 不合理
                    break;
                if(t>255) break; //超出范围
                cur.add(t);
                dfsrestoreIpAddresses(i+1,n,cur);
                cur.remove(cur.size()-1);
            }
        }
    } 
}

2. 二叉树中序遍历(94)

中序遍历顺序:左-根-右

class Solution {
    public List<Integer> inorderTraversal(TreeNode root) {
        List<Integer> res = new ArrayList<Integer>();
        Deque<TreeNode> stk = new LinkedList<TreeNode>();
        while (root != null || !stk.isEmpty()) {
            while (root != null) {
                stk.push(root);
                root = root.left;
            }
            root = stk.pop();
            res.add(root.val);
            root = root.right;
        }
        return res;
    }
}

3. 不同的二叉搜索树(95)

给你一个整数 n ,请你生成并返回所有由 n 个节点组成且节点值从 1 到 n 互不相同的不同 二叉搜索树 。可以按 任意顺序 返回答案

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public List<TreeNode> generateTrees(int n) {
   return dfsgenerateTrees(1,n);
    }

    private List<TreeNode> dfsgenerateTrees(int l, int r) {
        if(l>r) return new ArrayList<>(){{add(null);}};
        List<TreeNode> res = new ArrayList<>();
        for (int i = l; i <=r ; i++) {
            for (TreeNode x : dfsgenerateTrees(l, i - 1)) {
                for (TreeNode y : dfsgenerateTrees(i + 1, r)) {
                    TreeNode root = new TreeNode(i);
                    root.left = x;
                    root.right =y;
                    res.add(root);
                }
            }
        }
        return res;
    }
}

 

标签:TreeNode,cur,val,int,11.21,List,打卡,root
From: https://www.cnblogs.com/forever-fate/p/17847701.html

相关文章

  • 11.21每日总结
    实验内容与完成情况:(一) 编程实现以下指定功能,并用Hadoop提供的HBaseShell命令完成相同任务:  List列出hbase的表  查看表中的数据并且向指定表中添加数据。  删除列族。  统计表的行数和删除表。(二) HBase数据库操作1.创建表。     ......
  • 11.21
    昨天没闲话。3yy今天评价学校水龙头:你在二楼是找不到几个正常的水龙头的。说的很对,因为二楼的水龙头歪的比正常的还多。放假时候B站主页给我推了galgame?看来我调教的挺好。游戏名叫《他和她和她的恋爱》我去,纯爱神作(然而并不是),看了这游戏的讲解给我震撼到了,这剧情是牛的吧,世界......
  • 每日总结11.21
    HBase数据库操作(1)createTable(StringtableName,String[]fields)创建表,参数tableName为表的名称,字符串数组fields为存储记录各个字段名称的数组。要求当HBase已经存在名为tableName的表的时候,先删除原有的表,然后再创建新的表。(2)addRecord(StringtableName,Stringrow,Stri......
  • 聪明办法学Python_task1_11.20-11.21
    聪明办法学Python_task1_11.20-11.211.task011.1Python灵魂三问1.2Python环境配置2.task022.1注释2.2基本控制台输出2.3错误2.4基本控制台输入2.5导入模块1.task01:Python简介/安装1.1Python灵魂三问为什么学Python?Python是全球最流行的编程语言......
  • 2023.11.21做题笔记(对局匹配,砝码称重shui,单词接龙)
    今天水了一节英语课,翘了一节C++课,就是感觉摆的一批。 对局匹配P8656[蓝桥杯2017国B]对局匹配-洛谷|计算机科学教育新生态(luogu.com.cn)   对于这道题:大佬解法1:#include<bits/stdc++.h>usingnamespacestd;constintN=1e5+5;intn,k,a[N],an......
  • 2023.11.21——每日总结
    学习所花时间(包括上课):9h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习;我了解到的知识点:1.JavaGUI2.会话跟踪技术明日计划:学习......
  • 11.21每日总结
    今日时间:5h代码行数300学习内容:早上学习大数据的hbase的知识,打开hbase的指令是hbase打开方法,/export/server/hbase/bin/hbaseshell点击list查看表创建表得自己创建,creat‘表名’,‘列1‘,’列2‘,不知怎么必须用创建的,自己的还不行,还得是英文,学习计算机全是英文,当初我们的老祖......
  • 11.21-task2
    启航!c语言与python的区别打印helloworld时:c语言python:与c相比,python显然更加简单,优雅!python注释注释是用来对你写的代码进行解释和说明,能大幅度提升写代码时的逻辑性并让别人容易理解。。。。单行注释用#开头(只能写在一行)多行注释用'''或“”“包裹but这并......
  • 百度网盘(百度云)SVIP超级会员共享账号每日更新(2023.11.21)
    百度网盘会员账号共享(11.21更新)账号:aro85342密码:zdzv4086账号:3719heuk密码:303ulok账号:13262017701密码:4307uqg账号:5815hewo密码:886pinx账号:4636gpxt密码:1529oux共享账号存在密码被修改的可能,请谨慎使用。小编保持实时更新,希望给大家挖掘到更多有用的信息!如上述共享账......
  • 11月20每日打卡
    [实验任务一]:JAVA和C++常见数据结构迭代器的使用信1305班共44名同学,每名同学都有姓名,学号和年龄等属性,分别使用JAVA内置迭代器和C++中标准模板库(STL)实现对同学信息的遍历,要求按照学号从小到大和从大到小两种次序输出学生信息。实验要求:1. 搜集并掌握JAVA和C++中常见的数据结构......