一、ZOJ-1037:Gridland 1.1 问题描述 Background For years, computer scientists have been trying to find efficient solutions to different computing problems. For some of them efficient algorithms are already available, these are the “easy” problems like so
1、描述 给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 → L1 → … → Ln-1 → Ln 请将其重新排列后变为: L0 → Ln → L1 → Ln-1 → L2 → Ln-2 → … 不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/pr
链表OJ 1. 头插或三指针翻转法1.1 LeetCode206题---反转链表 2. LeetCode203题---移除链表元素3. 快慢指针法及其变形3.1 LeetCode876题---链表的中间结点3.2 剑指offer22题---链表中倒数第k个结点3.3 剑指offer27题---链表的回文结构3.4 LeetCode141题---环形链表I3.5 Lee
《数据结构、算法与应用 —— C++语言描述》学习笔记 — 二叉搜索树 一、二叉搜索树1、二叉搜索树特征2、索引二叉搜索树 二、抽象数据类型三、二叉搜索树实现1、字典类接口修改2、接口3、查找接口4、删除(1)父节点扩展(2)后继节点(3)节点交换功能实现(4)删除某个节点(5)删除接口 5、
一、单例模式要点 1、构造函数设置为私有函数,不允许类外创建 2、提供静态接口供客户获取单例 3、将类指针设为静态,因为静态函数只能操作静态变量 4、静态类指针类外初始化 二、懒汉模式 实例创建时机:第一次访问实例的时候创建模式类别:线程不安全、线程安全1、线程安全2 //线
首先来介绍一下浅拷贝: 所谓浅拷贝就是将一个对象中的内容原封不动发拷贝到另一个对象之中去,从字节上直接拷贝过去,这样说可能有点绕,简单来说在拷贝过程中涉及到动态内存管理,没有为其申请空间,而是将原空间的位置给了过去,可以认为共用一块空间。 浅拷贝的危害:当对象要销毁时,同一份
链接 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr)
基于链栈的进制转换算法 题目 将十进制数转换为其它进制数并输出(栈) 分析思路 进制转换在数学中我们使用的是短除法 一步步取余运算 最终从下往上拼接 好比这样: 时间仓促,字迹潦草,见谅 那么我们利用栈的后进先出(LIFO)的特性去做。 基本数据结构-链栈的实现 LinkStack.h /
练习:相同的树 给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1: 输入:p = [1,2,3], q = [1,2,3] 输出:true 示例 2: 输入:p = [1,2], q = [1,null,2] 输出:false 示例 3: 输入:p = [1,2
1 背景 熟悉Android开发的同学都知道,如果我们应用程序中发生了java层的崩溃,我们可以通过下面方式捕获, Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() { @Override public void uncaughtException(@NonNull Thread t, @Non
725. 分隔链表 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/split-linked-list-in-parts/ 题目描述 题目分析 返回的数组中里放着链表。 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; *
class Solution { public: unordered_map<int, TreeNode*> fa; unordered_map<int, bool> vis; void dfs(TreeNode* root){ if (root->left != nullptr) { fa[root->left->val] = root; dfs(root->lef
练习:二叉树的最小深度 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明:叶子节点是指没有子节点的节点。 示例 1: 输入:root = [3,9,20,null,null,15,7] 输出:2 示例 2: 输入:root = [2,null,3,null,4,null,5,null,6] 输出:5 提示:
725. 分隔链表 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : v
#include <iostream> #include <vector> #include <stack> #include <queue> using namespace std; struct Node{ int val; Node *left; Node *right; explicit Node(int value):val(value),left(nullptr),right(nullptr){} }; Node
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr
描述 Given the root of a binary tree, return the inorder traversal of its nodes’ values. Example 1: Input: root = [1,null,2,3] Output: [1,3,2] Example 2: Input: root = [] Output: [] Example 3: Input: root = [1] Output: [1] 递归 /** * Definition
以往我们定义空指针都是 int* p = NULL; 但是....NULL 在C++中被定义为 于是有了以下试验 #include <iostream> #include <sstream> #include <vector> using namespace std; void func(int* num) { cout << "ptr function" << endl; } void func
题意 2. 两数相加 题解 方法一:模拟 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, L
#include<iostream> #include<vector> using namespace std; struct TreeNode { int val; TreeNode* left; TreeNode* right; TreeNode(int x) :val(x), left(nullptr), right(nullptr) {} }; class SearchTree { private: int _a; public: void sum(int a)
Singleton 单件模式 保证一个类仅有一个实例,并提供一个该实例的全局访问点。 解决什么问题 在软件系统中,经常有这样一些特殊的类,必须保证他们在系统中只存在一个实例,才能保证它们逻辑的正确性、以及良好的效率。 如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例? 这
25. Reverse Nodes in k-Group Given a linked list, reverse the nodes of a linked list k at a time and return its modified list. k is a positive integer and is less than or equal to the length of the linked list. If the number of nodes is not a multiple
NULL具有二义性,即可作为0,也可以作为空指针。 之后的c++版本为解决这种问题,添加了nullptr(调用时不需引入包,它作为关键字) 所以为了程序的健壮性,最好使用nullptr 详情可见 https://www.freesion.com/article/12811026960/
1:递归法 vector<int> result;getValue(TreeNode* root, vector<int>& result) { if (root != nullptr) { getValue(root->left, result); result.emplace_back(root->val); getValue(root->right, result);} 2. 迭代法 while (!stack.empt
1.Vulkan SDK 开发 Vulkan 应用程序所需的最重要组件是 SDK。它包括头文件、标准验证层、调试工具和 Vulkan 函数的加载程序。加载程序在运行时查找驱动程序中的函数,类似于 OpenGL 的 GLEW - 如果您熟悉它。 可以 使用页面底部的按钮从LunarG 网站下载 SDK 。您不必创建帐户,