Android第四次面试总结(基础算法篇)

news2025/3/20 6:15:38

一、反转链表

// 定义链表节点类
class ListNode {
    // 节点存储的值
    int val;
    // 指向下一个节点的引用
    ListNode next;
    // 构造函数,用于初始化节点的值
    ListNode(int x) { val = x; }
}

class Solution {
    // 反转链表的方法
    public ListNode reverseList(ListNode head) {
        // 初始化前一个节点为 null
        ListNode prev = null;
        // 初始化当前节点为头节点
        ListNode current = head;
        // 遍历链表,直到当前节点为 null
        while (current != null) {
            // 保存当前节点的下一个节点
            ListNode nextNode = current.next;
            // 反转当前节点的指针,指向前一个节点
            current.next = prev;
            // 更新前一个节点为当前节点
            prev = current;
            // 更新当前节点为下一个节点
            current = nextNode;
        }
        // 返回反转后链表的头节点
        return prev;
    }

    public static void main(String[] args) {
        // 创建链表 1->2->3->4->5
        ListNode head = new ListNode(1);
        head.next = new ListNode(2);
        head.next.next = new ListNode(3);
        head.next.next.next = new ListNode(4);
        head.next.next.next.next = new ListNode(5);

        // 创建 Solution 类的实例
        Solution solution = new Solution();
        // 反转链表
        ListNode reversedHead = solution.reverseList(head);

        // 打印反转后的链表
        ListNode current = reversedHead;
        while (current != null) {
            System.out.print(current.val);
            if (current.next != null) {
                System.out.print(" -> ");
            }
            current = current.next;
        }
    }
}

二、viewgroup的广度搜索遍历子view(不限制二叉树) 

import android.view.View;
import android.view.ViewGroup;
import java.util.LinkedList;
import java.util.Queue;

/**
 * 该类提供了一个静态方法,用于对 ViewGroup 进行广度优先搜索(BFS)遍历。
 * 广度优先搜索是一种按层次顺序遍历 ViewGroup 及其子 View 的算法。
 */
public class ViewGroupBFS {

    /**
     * 对传入的 ViewGroup 进行广度优先搜索遍历。
     * 遍历过程中会打印每个 View 的简单类名,你可以根据实际需求修改处理逻辑。
     *
     * @param viewGroup 要进行遍历的根 ViewGroup
     */
    public static void traverseViewGroupBFS(ViewGroup viewGroup) {
        // 创建一个队列,用于存储待遍历的 View。
        // 使用 LinkedList 实现 Queue 接口,方便进行入队和出队操作。
        Queue<View> queue = new LinkedList<>();
        // 将传入的根 ViewGroup 添加到队列中,作为遍历的起始点。
        queue.add(viewGroup);

        // 当队列不为空时,继续进行遍历操作。
        while (!queue.isEmpty()) {
            // 从队列的头部取出一个 View 进行处理。
            // poll 方法会移除并返回队列的头部元素,如果队列为空则返回 null。
            View currentView = queue.poll();
            // 处理当前取出的 View。这里只是简单地打印该 View 的简单类名。
            // 你可以根据实际需求修改这部分逻辑,例如更新 UI、执行特定操作等。
            System.out.println("View: " + currentView.getClass().getSimpleName());

            // 检查当前 View 是否为 ViewGroup 类型。
            // 如果是 ViewGroup 类型,说明它可能包含子 View,需要进一步遍历其子 View。
            if (currentView instanceof ViewGroup) {
                // 将当前 View 强制转换为 ViewGroup 类型,以便访问其与子 View 相关的方法。
                ViewGroup currentViewGroup = (ViewGroup) currentView;
                // 获取当前 ViewGroup 包含的子 View 的数量。
                int childCount = currentViewGroup.getChildCount();
                // 遍历当前 ViewGroup 的所有子 View。
                for (int i = 0; i < childCount; i++) {
                    // 获取当前索引位置的子 View。
                    // getChildAt 方法用于根据索引获取 ViewGroup 中的子 View。
                    View childView = currentViewGroup.getChildAt(i);
                    // 将获取到的子 View 添加到队列的尾部,以便后续进行遍历。
                    queue.add(childView);
                }
            }
        }
    }
}    

这是我在Android面试中遇到的算法题 ,希望可以对你有所帮助!!!

感谢观看!!! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2318198.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DAPO-Decoupled Clip and Dynamic sAmpling Policy Optimization

论文地址&#xff1a;https://dapo-sia.github.io/static/pdf/dapo_paper.pdf 代码地址&#xff1a;https://github.com/volcengine/verl/tree/gm-tyx/puffin/main/recipe/dapo 数据&#xff1a;https://huggingface.co/datasets/BytedTsinghua-SIA/DAPO-Math-17k 1. 背景与动机…

数组模拟邻接表 #图论

文章目录 为什么要用数组来模拟邻接表存储思路遍历思路 树是特殊的图&#xff0c;因此邻接表可以存储图和树两种数据结构。 为什么要用数组来模拟邻接表 在算法设计当中&#xff0c;利用数组来代替结构体模拟各种数据结构会更加简单。 存储思路 给定如下数据,我们可以构造如…

VBA常见的知识都有哪些,让AI编写的VBA经常 报错,所以VBA的基础还是要学习的

掌握这些能够大大的提高VBA的编写效率&#xff0c;欢迎来到涛涛聊AI。 1. 异常处理 Cleanup:是VBScript的错误处理标签&#xff0c;用于标记程序执行失败或退出时需要执行的清理操作&#xff08;如关闭文件、释放对象&#xff09;。这段代码会在遇到错误或用户取消操作时跳转…

DeepSeek(8):结合Kimi-PPT助手一键生成演示报告

1 生成内容 在Deepseek中生成内容&#xff1a; 帮我创建年度计划&#xff0c;描述《智能枕头》产品的如何在全国销售&#xff0c;计划切分到每个月。从而让我们的老板和团队对报告充满信息。输出的内容我需要放到ppt中进行展示。 使用Deepseek R1模型&#xff0c;如下&#x…

【MySQL】MySQL如何存储元数据?

目录 1.数据字典的作用 2. MySQL 8.0 之前的数据字典 3. MySQL 8.0 及之后的数据字典 4.MySQL 8 中的事务数据字典的特征 5.数据字典的序列化 6. .sdi文件的作用&#xff1a; 7..sdi的存储方式 在 MySQL 中&#xff0c;元数据&#xff08;Metadata&#xff09; 是描述数…

用ASCII字符转化图片

代码 from PIL import Image# 定义 ASCII 字符集&#xff0c;从最暗到最亮 ASCII_CHARS "%#*-:. "def resize_image(image, new_width100):width, height image.sizeratio height / widthnew_height int(new_width * ratio)resized_image image.resize((new_wi…

蓝桥与力扣刷题(蓝桥 组队)

题目&#xff1a;作为篮球队教练&#xff0c;你需要从以下名单中选出 1 号位至 5 号位各一名球员&#xff0c;组成球队的首发阵容。 每位球员担任 1号位至 5号位时的评分如下表所示。请你计算首发阵容 1 号位至 5 号位的评分之和最大可能是多少&#xff1f; 本题为填空题&…

AI Agent系列(六) -基于ReAct架构搭建LLM Agent(Deepseek)

AI Agent系列【六】 一、 ReAct1.1 ReAct 的处理过程&#xff1a;1.1 代码结构 二、 Python代码实现2.1 通过Zero-shot 实现python代码实例Python代码示例1&#xff1a;python代码实现示例2 一、 ReAct ReAct 是 Reseaning 和 Action 两个词的前缀合成&#xff0c;代表着先推…

AnyTouch:跨多个视觉触觉传感器学习统一的静态动态表征

25年3月来自人大、武汉科技大学和北邮的论文“AnyTouch: Learning Unified Static-dynamic Representation Across Multiple Visuo-tactile Sensors”。 视觉触觉传感器旨在模拟人类的触觉感知&#xff0c;使机器人能够精确地理解和操纵物体。随着时间的推移&#xff0c;许多精…

YOLOv11 目标检测

本文章不再赘述anaconda的下载以及虚拟环境的配置&#xff0c;博主使用的python版本为3.8 1.获取YOLOv11的源工程文件 链接&#xff1a;GitHub - ultralytics/ultralytics: Ultralytics YOLO11 &#x1f680; 直接下载解压 2.需要自己准备的文件 文件结构如下&#xff1a;红…

VSCode C/C++ 环境搭建指南

一、前言 Visual Studio Code&#xff08;简称 VSCode&#xff09;是一款轻量级且功能强大的跨平台代码编辑器&#xff0c;凭借丰富的插件生态和高度的可定制性&#xff0c;深受开发者喜爱。对于 C/C 开发者而言&#xff0c;在 VSCode 中搭建开发环境&#xff0c;能够获得灵活…

Python 中下划线 “_” 的多面性:从变量到约定

# Python中下划线“_”的多面性&#xff1a;从变量到约定 在Python的语法体系里&#xff0c;下划线“_”看似毫不起眼&#xff0c;实则扮演着极为重要且多样化的角色。它不仅能作为普通变量参与编程&#xff0c;更在多个特殊场景下有着独特的用途与约定。深入理解下划线的各种…

Vue3项目开发:状态管理实践指南

# Vue3项目开发&#xff1a;状态管理实践指南 一、引言 背景介绍 在Vue项目中&#xff0c;状态管理是一个非常重要的话题。合理的状态管理能够帮助我们更好地组织和管理数据&#xff0c;提升项目的可维护性和可扩展性。本文将深入探讨Vue3项目中状态管理的最佳实践&#xff0c;…

数据结构-------栈

顺序栈&#xff1a; 一、数据结构定义 数据元素 DATATYPE typedef struct person {char name[32];char sex;int age;int score; } DATATYPE;顺序栈结构 SeqStack typedef struct list {DATATYPE *head; // 栈空间首地址int tlen; // 栈总容量&#xff08;total leng…

机器学习概要

文章目录 一、什么是机器学习 二、机器学习的种类 1. 有监督学习 2. 无监督学习 3.强化学习 三、机器学习的应用 四、机器学习的步骤 1. 数据的重要性 2. 数据和学习的种类 3. 可视化 一、什么是机器学习 机器学习指的是计算机根据给定的问题、课题或环境进行学习&a…

【LangChain入门 2 Model组件】开始!LLM Models简单对话

文章目录 一、使用langchain_ollama二、采用DeepSeek的API三、Model 介绍3.1 OllamaLLM 预训练模型3.2 ChatOllama 聊天预训练模型3.3 OllamaEmbeddings 实现一个helloworld&#xff0c;跑通一个简单的对话。 后面章节会正式介绍LangChain的各个功能。 后台llm的端口可以任意选…

C++20 中线程管理与取消机制的深度剖析

文章目录 std::jthread&#xff1a;更智能的线程管理背景与优势构造函数与 std::stop_token 的集成 std::stop_token、std::stop_source 和 std::stop_callback&#xff1a;灵活的取消机制std::stop_token&#xff1a;取消请求的指示器std::stop_source&#xff1a;取消请求的发…

Vue3 核心特性解析:Suspense 与 Teleport 原理深度剖析

Vue3 核心特性解析&#xff1a;Suspense 与 Teleport 原理深度剖析 一、Teleport&#xff1a;突破组件层级的时空传送 1.1 实现原理图解 #mermaid-svg-75dTmiektg1XNS13 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-s…

FPGA——实现LED流水灯

文章目录 一、Quartusll_18.1和VS Code软件的关联二、DE2-115的时钟电路三、流水灯的分层次设计四、总结 一、Quartusll_18.1和VS Code软件的关联 1.先打开Quartus II 软件&#xff0c;然后选择菜单栏“Tools”下的“Options…”。 2.点击“Options…”&#xff0c;在弹出的对…

Excel 小黑第12套

对应大猫13 涉及金额修改 -数字组 -修改会计专用 VLOOKUP函数使用&#xff08;查找目标&#xff0c;查找范围&#xff08;F4 绝对引用&#xff09;&#xff0c;返回值的所在列数&#xff0c;精确查找或模糊查找&#xff09;双击填充柄就会显示所有值 这个逗号要中文的不能英…