22. 平面列表

给定一个列表,该列表中的每个要素要么是个列表,要么是整数。将其变成一个只包含整数的简单列表。

 注意事项

如果给定的列表中的要素本身也是一个列表,那么它也可以包含列表。 

样例

给定 [1,2,[1,2]],返回 [1,2,1,2]

给定 [4,[3,[2,[1]]]],返回 [4,3,2,1]

挑战 

请用非递归方法尝试解答这道题。

思路:题目中既然是列表中还可能包含列表,就说明需要多次的循环,而递归函数就是循环 的很好的一个方法,若其中的元素是整型,就直接取出来,若是列表就进行递归。

class Solution {  
public:  
    // @param nestedList a list of NestedInteger  
    // @return a list of integer  
    void lflatten(const vector<NestedInteger> &nestedList,vector<int> &result) {  
        // Write your code here  
        int i=0;  
        while(i<nestedList.size()){  
            if(nestedList[i].isInteger())  
            result.push_back(nestedList[i++].getInteger());  
            else  
                lflatten(nestedList[i++].getList(),result);  
        }  
    }  
      
    vector<int> flatten(vector<NestedInteger> &nestedList) {  
        // Write your code here  
        vector<int> result;  
          
        lflatten(nestedList,result);  
        return result;  
         
    }  
}; 
而提高中的要求是非递归算法,其实非递归算法也是要实现循环,每次判断是否是列表,一个一个的进行循环
### 安装和配置 Docker 为了在Ubuntu 22.04上成功安装Kubernetes,首先需要确保Docker已经正确安装并配置完毕。这一步骤至关重要,因为Kubernetes依赖于容器运行时环境来管理Pod中的容器实例。 ```bash sudo apt-get update && sudo apt-get install -y containerd.io docker-ce docker-ce-cli ``` 接着,验证Docker服务是否正常启动: ```bash sudo systemctl status docker ``` 如果一切顺利,则可以继续下一步操作[^1]。 ### 下载CNI插件 网络通信对于任何分布式系统来说都是必不可少的一部分,在此之前还需要获取相应的Container Network Interface(CNI) 插件文件包,并将其放置到指定路径下以便后续使用Flannel作为pod间通讯方案之一: 前往GitHub页面下载对应版本的二进制压缩包至`/home`目录, 解压后将其中名为`flannel`可执行程序拷贝至 `/opt/cni/bin/`, 这样就完成了基本准备工作. ```bash wget https://github.com/containernetworking/plugins/releases/download/v0.8.6/cni-plugins-linux-amd64-v0.8.6.tgz -P ~/ tar zxvf ~/cni-plugins-linux-amd64-v0.8.6.tgz -C /opt/cni/bin/ cp /opt/cni/bin/flannel /opt/cni/bin/ ``` 此时可以通过命令 `kubectl get node` 来初步检验当前节点的状态信息[^2]. ### 配置 Containerd 创建必要的证书存储位置以及相应的内容描述文档(hosts.toml), 并设置好镜像源地址以加速拉取速度; 同时也支持自定义其他可信仓库如阿里云或中科大镜像站等。 ```bash sudo mkdir -p /etc/containerd/certs.d/docker.io /etc/containerd/certs.d/quay.io cat <<EOF | sudo tee /etc/containerd/certs.d/docker.io/hosts.toml server = "https://docker.io" [host."https://prh13f1a.mirror.aliyuncs.com"] EOF cat <<EOF | sudo tee /etc/containerd/certs.d/quay.io/hosts.toml server = "https://quay.io" [host."https://quay.mirrors.ustc.edu.cn"] EOF ``` 上述指令会分别针对官方默认库(docker.io) 和另一个常用开源项目托管平台(quay.io),通过修改其对应的主机映射关系实现国内访问优化效果[^3]. ### 安装 Kubernetes 组件 完成以上前置条件之后就可以正式进入主题——安装kubeadm,kubelet,kubectl三个核心工具集了;它们共同构成了最小化的控制平面(master node). #### 更新APT索引源列表 由于这些软件包并非来自标准发行版渠道而是由社区维护发布,因此需先添加特定GPG密钥认证并通过编辑器追加一条新的apt-repository记录指向google服务器上的资源池。 ```bash curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/kubernetes-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] http://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list ``` #### 执行实际安装过程 现在终于能够利用apt-get机制轻松搞定剩余部分啦! ```bash sudo apt-get update sudo apt-get install -y kubelet kubeadm kubectl ``` 注意这里指定了具体的版本号v1.28.x系列,可以根据实际情况调整选择稳定分支或是尝鲜特性预览版. 至此为止整个流程已接近尾声,只需最后几步简单初始化工作就能让单机版集群跑起来咯~ ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值