Day3 链表基础
移除链表元素题目描述给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。
示例 1:
12输入:head = [1,2,6,3,4,5,6], val = 6输出:[1,2,3,4,5]
思路解析此题考查链表的删除操作,设置一个虚拟头节点指向第一个节点,这样就可以统一删除操作了。
12345678910111213141516171819202122struct ListNode { int val; ListNode *next; ListNode() : val(0), next(nullptr) {} ListNode(int x) : val(x), next(nullptr) {} ListNode(int x, ListNode *next) : val(x), next(next) {}};ListNode* removeElements(ListNode* head, int val) { ...
Day2 数组基础
有序数组的平方题目描述给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
思路解析此题很容易想到暴力解法,只需要先平方再排序即可,但是那样的话时间复杂度最快是O(nlogn),不够好,像这样的题追求的基本都是线性的时间复杂度。
注意到对于非负值来说,其原来的顺序就是平方后的顺序,可能改变的就是负数平方之后会插入在这些非负数平方之间。另外,负数越小,平方之后就越大,插入的位置就越往后。所以我们想到用双指针的方法,设置一前一后两个指针,前指针指向要插入的负数,后指针指向负数平方后将要插入的位置。
基本的代码逻辑是,右指针不断向左移动找插入位置,左指针一个个插入右指针找好的位置,直到左指针与右指针相遇后传入最后一个值随后退出循环。
代码如下:
1234567891011121314151617vector<int> sortedSquares(vector<int>& nums) { int pl = 0, pr = nums.size() - 1; int k = nums.size( ...
Day1 数组基础
二分法查找二分查找适用于有序数组中的元素查找,时间复杂度为O(logn),根据右指针设置的不同可以有两种不同的写法。
第一种也是我主要记忆的方法就是左闭右闭区间查找,右指针指向nums.size() - 1,这种方法的重要特征是循环条件while(l <= r), 当左边与右边相等时是有比较意义的,因为本来就需要看两边的值。这种实现方式的C++代码如下:
12345678910111213141516int BinarySearch(vector<int> nums, int target){ int l = 0, r = nums.size() - 1; while (l <= r){ int mid = (l + r) >> 1; if (nums[mid] == target) return mid; else if (num[mid] < target){ r = mid + 1; } else{ l = mid - 1; } } retur ...
分层架构
本文由 简悦 SimpRead 转码, 原文地址 www.oreilly.com
Chapter 1. Layered Architecture The most common architecture pattern is the layered architecture pat……
Chapter 1. Layered Architecture第一章分层架构The most common architecture pattern is the layered architecture pattern, otherwise known as the n-tier architecture pattern. This pattern is the de facto standard for most Java EE applications and therefore is widely known by most architects, designers, and developers. The layered architecture pattern closely ma ...
数据库范式详解
本文由 简悦 SimpRead 转码, 原文地址 zhuanlan.zhihu.com
引言MySQL 的库表设计,在很多时候我们都是率性而为,往往在前期的设计中考虑并不全面,同时对于库表结构的划分也并不明确,所以很多时候在开发过程中,代码敲着敲着会去重构某张表结构,甚至大面积重构多张表结构,这种随心所欲的设计方式,无疑给开发造成了很大困扰。
但实际上设计 DB 库表结构时,也有一些共同需要遵守的规范,这些规范在数据库设计中被称为 “范式”,理解并掌握这些设计时的规范,能让咱们在项目之初,设计的库表结构更为合理且优雅。数据库范式中,声名远扬的有三大范式,但除此之外也有一些其他设计规范,如:
①数据库三大范式(1NF、2NF、3NF)
③第四范式 (4NF)和第五范式:完美范式(5NF)
②巴斯 - 科德范式(BCNF)
④反范式设计
不过对于上述的几种设计范式,大部分小伙伴应该仅了解过三范式,对于其他的应该未曾接触,那在本篇中会重点阐述库表设计时,会用到的这些范式。
一、数据库三大范式范式 (Normal Form) 在前面也提到过,它就是指设计数据库时要遵守的一些原则,而数据 ...
QThread&QTimer讲解和实现
最近在做HCI的第一个作业语音识别和操作系统课设时需要用到pyqt5做前端界面,而且这两者都涉及多线程,可是操作系统刚刚学完线程的理论🥲,所以又得发扬本专业的优良传统:自学了。为了加深自己的记忆,也为了能给后来者提供参考,现在总结一下做项目需要用到的基本的多线程知识。
多线程简介多线程的目的:
Sometimes you can divide your programs into several smaller subprograms, or tasks, that you can run in several threads. This might make your programs faster, or it might help you improve the user experience by preventing your programs from freezing while executing long-running tasks.
多线程程序通常比单线程程序更难编写、维护和调试,因为涉及到在线程之间共享资源、同步数据访问和协调线程执行方面的复杂性。这可 ...
Macbook pro (M1 pro 2021款)语音识别环境搭建
环境准备
Anaconda
pycharm
Mac os Ventura 13.2.1
搭建步骤
安装Anaconda,然后在命令行里输入 conda —version(双横线) ,如果显示找不到conda的话,那就需要将conda加入到环境变量中。参考方法如下:(本教程使用了全局设置/etc/paths)
MAC 设置环境变量path的几种方法
然后使用conda create -n <name> python=3.7创建虚拟环境,注意这里的python环境是3.7版本,如果用别的版本很可能会出问题!
conda activate <name>激活虚拟环境
然后就可以使用conda install <package_name>来安装库了,注意安装的库在Users/jiaoao/anaconda3/pkgs 文件夹中,也可以用conda list来显示已安装的库
🔥如果安装的过程中提示:****PackagesNotFoundError: The following packages are ...
神经网络中激活函数的选取
输出层
当输出是0/1值时采取Sigmoid Function
当输出是连续值,并且能取正负值时选取线性激活函数(也就是没有激活函数)
当输出是非负值时取ReLU激活函数:g(z) = max(0,z)
隐藏层隐藏层中最广泛使用的是**ReLU函数**,对比Sigmoid函数的原因如下:
计算ReLU函数比Sigmoid函数快很多
计算梯度下降时速度和图像的斜率有关,因为sigmoid函数在图像两边的斜率太小,梯度要迭代很多次才能收敛。而RELU不会出现这个问题
代码1234567from tf.keras.layers import Densemodel = Sequential([ Dense(units = 25, activation = 'relu'), # layer1 Dense(units = 15, activation = 'relu'), # layer2 Dense(units = 1, activation = 'sigmoid') # output layer])
...
Mac m1 tensor-flow 和 sklearn环境配置
Tensor Flow&Sklearn 环境配置环境
Mac OS Ventura 13.2.1
Macbook pro M1 pro 2021
Python 3.9
conda 23.1.0
Tensor Flow检查自己的conda环境虽然conda官方已提供minicoda的mac m1适配,但也不能用,一定需要miniforge3,如以前环境较乱,最好是删除自己装过的miniforge3环境重装。
安装miniforge3步骤
删除已有环境
12345cd ~ rm -rf ~/miniforge3 rm -rf .conda rm -rf .condarc 完成后,进入 .zshrc ,gg 将末端配置 miniforge3 的 PATH 配置删除。 ``
下载 Miniforge3_MacOS_ARM64 选择 Miniforge3-MacOSX-arm64
1234567chmod +x ~/Downloads/Miniforge3-MacOSX-arm64.sh sh ~/Downloads/Miniforge3-MacOSX-arm64 ...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick StartCreate a new post1$ hexo new "My New Post"
More info: Writing
Run server1$ hexo server
More info: Server
Generate static files1$ hexo generate
More info: Generating
Deploy to remote sites1$ hexo deploy
More info: Deployment