Leetcode--Java--231. 2 的幂

题目描述给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。样例描述示例 1:输入:n = 1输出:true解释:20 = 1示例 2:输入:n = 16输出:true解释:24 = 16思路位运算如果n是2的幂,一定会有满足n & (n - 1) == 0,n最高位二进制位为1,其余所有位为0, n - 1的最高位为0, 其余所有位为
分类: 其他 发布时间: 11-20 08:45 阅读次数: 0

Leetcode--Java--232. 用栈实现队列

题目描述请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返回队列开头的元素boolean empty() 如果队列为空,返回 true ;否则,返回 false样例描述输入:["MyQueue", "push", "push", "peek", "pop", "empty"]
分类: 其他 发布时间: 11-20 08:44 阅读次数: 0

Leetcode--Java--235. 二叉搜索树的最近公共祖先

题目描述给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]样例描述思路递归 + 分情况讨论时间复杂度 O(h)h为树的高度考虑两个结点三种位置情况,两个分别在两边,都在左子树,或者都在右子树
分类: 其他 发布时间: 11-20 08:44 阅读次数: 0

Leetcode--Java--397. 整数替换

题目描述给定一个正整数 n ,你可以做如下操作:如果 n 是偶数,则用 n / 2替换 n 。如果 n 是奇数,则可以用 n + 1或n - 1替换 n 。n 变为 1 所需的最小替换次数是多少?样例描述示例 1:输入:n = 8输出:3解释:8 -> 4 -> 2 -> 1示例 2:输入:n = 7输出:4解释:7 -> 8 -> 4 -> 2 -> 1或 7 -> 6 -> 3 -> 2 -> 1思路
分类: 其他 发布时间: 11-20 08:44 阅读次数: 0

Leetcode--Java--236. 二叉树的最近公共祖先

题目描述给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”样例描述思路递归 + 回溯本题在这里基础上少了BST的性质,就无法快速判断p、q结点在左子树还是右子树上。因此需要每次遍历两颗子树判断里面有没有p和q,最坏情况需要遍历所有的树,复杂度是O(n)。如果p,q分布在异侧,就返回根结点。如果碰
分类: 其他 发布时间: 11-20 08:44 阅读次数: 0

CefSharp WPF 无法向浏览器发送按键消息的解决办法(卡了我一整天,坑爹死了,吐血整理)

1、首先,CEF 有一套自己的消息循环机制,因此一般的调用 Windows API 像 CefSharp 向浏览器所在的窗口发送按键消息的方法是行不通的。2、CefSharp 既可以嵌入 WinForm 应用程序,也可以嵌入 WPF 应用程序。CefSharp 本身带有向浏览器发送按键消息的 SendKeyEvent 函数。使用方法是:Browser.GetBrowserHost().SendKeyEvent(KeyDownEnd);其中,Browser 是 CefSharp 浏览器的实例:usi
分类: 其他 发布时间: 11-20 08:43 阅读次数: 0

C# WPF 绑定到数据源的控件无法更新(显示空白)的解决办法

首先回顾一下在 WPF 中将控件进行数据绑定的写法。例如,要将一个两列的 ListBox 进行数据绑定,在 XAML 中,该 ListBox 的 XAML 代码大致为<ListBox Name="EmployeeList" HorizontalContentAlignment="Stretch"> <ListBox.ItemTemplate> <DataTemplate> <Grid> <Grid.ColumnDefinition
分类: 其他 发布时间: 11-20 08:43 阅读次数: 0

设计模式:简单工厂模式扩展-实例 超能力者量产计划!

作业要求寻找一个合理的场景适合实现简单工厂模式扩展。1、画出该场景的UML图。2、给出源代码。3、给出源代码的运行结果。解简单工厂模式在简单工厂模式中,工厂类根据工厂方法所传入的参数来动态决定应该创建出哪一个产品类的实例。简单工厂模式扩展在有些情况下工厂类可以由抽象产品角色扮演,一个抽象产品类同时也是子类的工厂,也就是说把静态工厂方法写到抽象产品类中。场景超能力者量产计划!工厂负责大规模生产指定的超能力者的克隆体,终极目标是能够批量复制学园都市(Academy City)的 7 位超
分类: 其他 发布时间: 11-20 08:43 阅读次数: 0

【Linux 编程基础】makefile的综合应用-实例

问题1模拟一个自动寻路机器人。假设有一个10*10的网格地图,最左上角的坐标为(0,0),最右下角为(9,9),在左上角(0,0)坐标处生成机器人,机器人只有两个动作:向下走down()和向右走right()。每次随机生成一个终点(h,w),打印机器人从(0,0)走到(h,w)的路线(自己决定机器人的行走路线)。例如:随机生成的终点是(2,3)输出(0,0),(0,1),(0,2),(0,3),(1,3),(2,3)要求:1)向右走写成一个函数放在right.c文件里,向下走写成一个函数放在
分类: 其他 发布时间: 11-20 08:43 阅读次数: 0

【Linux 编程基础】常见的系统调用

问题1编写一个c程序,判断一份属于当前用户的文件是否可读可写,如果不可读或不可写则将其修改为可读可写。#include <fcntl.h>#include <stdio.h>#include <sys/stat.h>#include <unistd.h>int main(int argc, char** argv) { switch (argc) { default: puts("Argument ERROR\nU
分类: 其他 发布时间: 11-20 08:42 阅读次数: 0

【2021/4/12修订】【梳理】计算机组成与设计 第5章 存储的层次结构(docx)

配套教材:Computer Organization and Design: The Hardware / Software Interface (5th Edition)这是专业必修课《计算机组成原理》的复习指引。建议将本复习指导与博客中的《简明操作系统原理》配合复习。需要掌握的概念在文档中以蓝色标识,并用可读性更好的字体显示 Linux 命令和代码。代码部分语法高亮。计算机组成原理不是语言课,本复习指导对用到的编程语言的语法的讲解也不会很细致。如果不知道代码中的一些关键字、指令或函数的具体用法,
分类: 其他 发布时间: 11-20 08:42 阅读次数: 0

【Visual Studio】更改编译使用的 C / C++ 版本 / 输出纯 C 代码

第 1 步:打开项目属性第 2 步:在 “配置属性” → “通用” 中,更改 C / C++ 语言的版本如果要输出纯 C 代码,在 “C / C++” → “高级” 中,设置 “编译为 C 代码”如果没有 “C / C++” 一项,请先在项目中新建一个 .c 或 .cpp 文件。...
分类: 其他 发布时间: 11-20 08:42 阅读次数: 0

【C / C++】可变参数个数函数的注意事项

#include <stdarg.h>void f(int _Count, ...) { va_list args; va_start(args, _Count); //... va_arg(args, int); //... va_end(args);}int main() { //...}可变数量参数部分必须列写在函数参数的最后,用三个点 “…” 表示。使用 va_list 声明一个可变参数列表。当开始依次读取可变参数时,使用 va_start。第一个参数为
分类: 其他 发布时间: 11-20 08:41 阅读次数: 0

在 Visual Studio 中,复制带语法高亮的文本

在 工具 → 选项 → 文本编辑器 → 高级 中,复选 “在复制或剪切时复制富文本”,并将长度限制改为最大值 2147483647。
分类: 其他 发布时间: 11-20 08:41 阅读次数: 0

使用深度优先搜索(DFS)、广度优先搜索(BFS)、A* 搜索算法求解 (n^2 -1) 数码难题,耗时与内存占用(时空复杂度)对比(附:(n^2 - 1) 数码问题控制台简易演示程序)

一、实验目的通过编程实验,体会并理解人工智能领域常用的新型搜索算法的测试用例 —— (n^2 -1) 数码问题。二、实验内容和要求通过深度优先搜索(DFS)、宽度优先搜索(BFS)、A*搜索算法来求解 (n^2 -1) 数码难题,要求如下:初始状态以及目标状态形如下图。输出完整的从初始状态到目标状态的动作序列。对比3种算法的时间、空间消耗。三、参考实验环境CPU: Intel Core i5-8400 @ 2.80 GHz / 3.80 GHz, 6C6T 指令集: MMX
分类: 其他 发布时间: 11-20 08:41 阅读次数: 0

【Linux 编程基础 · 多进程实验】请利用 fork() 函数创建 8 个进程,这些进程具有以下关系,最后在每个进程中打印自己的 PID 作为输出结果。

题目请利用 fork() 函数创建 8 个进程,这些进程具有以下关系,最后在每个进程中打印自己的 PID 作为输出结果。点拨注意:在条件语句的动作范围内,除非立刻运行到 main() 的返回语句,否则,需要return 0;来让执行完毕的父进程代码或子进程代码立刻结束。父进程会创建多个子进程,但是在不出错的情形下,每次 fork() 的返回值都会大于 0。这时候任选一个大于 0 的返回值,并根据返回值来执行父进程的动作,避免重复执行。在其中一个子进程创建出错时,可以在报告错误后不立即返回,
分类: 其他 发布时间: 11-20 08:41 阅读次数: 0

【Linux 编程基础 · 多进程实验(二)】利用 fork() 创建 10 个子进程,每个子进程打印自己的 PID,父进程阻塞式地等待每个子进程结束并回收,然后打印该子进程的 PID。

题目利用 fork() 创建 10 个子进程,每个子进程打印自己的 PID,父进程阻塞式地等待每个子进程结束并回收,然后打印该子进程的 PID。源代码#include <iostream>#include <sys/types.h>#include <sys/wait.h>#include <unistd.h>using namespace std;const size_t CHILDREN_COUNT = 10;int main()
分类: 其他 发布时间: 11-20 08:40 阅读次数: 0

【Linux 编程基础 · 多进程实验(三)】利用fork()创建3个子进程:第1个子进程打印“Hello World”;第2个子进程计算2的8次方,并且打印结果;第3个子进程尝试打印5/0的结果。父

题目利用 fork() 创建 3 个子进程:第 1 个子进程打印 “Hello World”;第 2 个子进程计算 2 的 8 次方,并且打印结果;第 3 个子进程尝试打印 5 / 0 的结果。父进程利用轮询方法非阻塞式地等待 3 个子进程结束,并且打印子进程的结束信息。点拨waitpid() 等待一个指定的进程或进程组的状态改变。默认情况下,它只在指定的进程(组)被终止后返回。可以通过传递相应的参数来改变其行为。该函数返回状态改变的子进程 ID。若出错,返回 -1。如果指定了参数(宏)WNOHANG
分类: 其他 发布时间: 11-20 08:40 阅读次数: 0

【Linux 编程基础 · 信号(一)】众所周知,游戏都有暂停功能,请利用 fork() 函数创建父子进程,其中一个隔一秒打印一段文字(模拟运行的游戏),另外一个接收键盘的输入,并发送信号暂停与继续游

题目众所周知,游戏都有暂停功能,请利用 fork() 函数创建父子进程,其中一个隔一秒打印一段文字(模拟运行的游戏),另外一个接收键盘的输入,并发送信号暂停与继续游戏(例如可以按 ’s’ 键暂停,按 ’c’ 键继续)。提示:1) 自行思考父子进程中,哪个模拟游戏,哪个接收输入并发送信号。2) 自行查找发送什么信号 “暂停”,什么信号 “继续”。源代码#include <iostream>#include <signal.h>#include <unistd.h&gt
分类: 其他 发布时间: 11-20 08:40 阅读次数: 0

【Linux 编程基础 · 进程间通信 · 命名管道 · 消息队列】众所周知,网络游戏有服务端与客户端,客户端需要发 “消息” 给服务端,请使用 “命名管道” 模拟以下服务端和客户端的功能

题目众所周知,网络游戏有服务端与客户端,客户端需要发 “消息” 给服务端,请使用 “命名管道” 模拟以下服务端和客户端的功能。客户端:接收4种输入‘w’、’s’、’a’、’d’ 键,他们分别对应了上、下、左、右移动,将接收的输入作为 “消息” 发送给服务端。服务端:每隔一秒打印角色的坐标 (x, y),初始坐标为 (0, 0),服务端在接收到客户端的 “消息” 过后,重新计算角色的坐标。其中向上 y 加 1,向下 y 减 1,向左 x 减 1,向右 x 加 1。源代码Client:#includ
分类: 其他 发布时间: 11-20 08:40 阅读次数: 0