- 博客(54)
- 收藏
- 关注
原创 LeetCode 19. Remove Nth Node From End of List
这道题我看了答案,使用了双指针法来解决问题,class Solution {public: ListNode* removeNthFromEnd(ListNode* head, int n) { ListNode* dummy = new ListNode(0, head); ListNode* first = head; ListNode* second = dummy; for (int i = 0; i ...
2021-08-17 23:13:31
211
原创 剑指 Offer 35. 复杂链表的复制 LCOF
这道题看答案了,哈希做法很不错。class Solution {public: Node* copyRandomList(Node* head) { if (head == nullptr) return nullptr; Node* cur = head; unordered_map<Node*, Node*> map; while (cur != nullptr) {
2021-08-13 12:25:35
151
原创 剑指 Offer 24. 反转链表 LCOF
用迭代的方法,class Solution {public: ListNode* reverseList(ListNode* head) { ListNode* prev = nullptr; ListNode* curr = head; while (curr) { ListNode* temp = curr->next; curr->next = prev;
2021-08-11 21:36:53
157
原创 剑指 Offer 06. 从尾到头打印链表 LCOF
利用一个堆栈,现将数组中的数值依次放入堆栈中,之后从堆栈中依次取出就是从尾到头顺序了。class Solution {public: vector<int> reversePrint(ListNode* head) { stack<int> stack; vector<int> temp; while (head) { stack.push(head->val);
2021-08-11 20:43:40
71
原创 剑指 Offer 30. 包含min函数的栈 LCOF
class MinStack {public: MinStack() { } void push(int x) { stack.push(x); if (min_stack.empty() || min_stack.top() >= x) { min_stack.push(x); } } void pop() { if (!stack.empty().
2021-08-10 16:27:35
80
原创 剑指 Offer 09. 用两个栈实现队列 LCOF
这道题就是一个堆栈出,另一个堆栈进,来模拟一个队列。class CQueue {public: CQueue() { while (!stack1.empty()) stack1.pop(); while (!stack2.empty()) stack2.pop(); } void appendTail(int value) { stack1.push(value); } int delet
2021-08-10 16:10:18
132
原创 LeetCode 876. Middle of the Linked List
这道题不会直接看答案,快慢指针法很爽,后面好好研究研究快慢指针法。class Solution {public: ListNode* middleNode(ListNode* head) { ListNode* slow = head; ListNode* fast = head; while (fast != NULL && fast->next != NULL) { slow = slo...
2021-08-05 23:27:09
82
原创 LeetCode 557. Reverse Words in a String III
这道题参考答案,主要是要处理字符里的空格。class Solution {public: string reverseWords(string s) { const int n = s.length(); int i = 0; while (i < n) { int start = i; while (i < n && s[i] != ' ') i++; ..
2021-08-04 21:55:48
80
原创 LeetCode 344. Reverse String
双指针解法:class Solution {public: void reverseString(vector<char>& s) { int p = 0, q = s.size() - 1; while (p <= q) { swap(s[p], s[q]); ++p; --q; } }};
2021-08-04 21:40:16
119
原创 LeetCode 283. Move Zeros
遍历数组,找出不是0的数,将他们覆盖给另一个都为0的数组中即可。class Solution {public: void moveZeros(vector<int>& nums) { const int n = nums.size(); vector<int> newAddr(n); int j = 0; for (int i = 0; i < n; ++i) { ...
2021-08-03 19:54:12
129
原创 LeetCode 189. Rotate Array
class Solution {public: void rotate(vector<int>& nums, int k) { const int n = nums.size(); vector<int> newArr(n); for (int i = 0; i < n; ++i) { newArr[(k + i) % n] = nums[i];...
2021-08-03 17:57:56
134
原创 LeetCode 977.Squares of a Sorted Array 做题记录
这道题暴力破解的解法:class Solution {public: vector<int> sortedSquares(vector<int>& A) { vector<int> B; for (int x : A) { B.push_back(x * x); } sort(B.begin(), B.end()); ...
2021-08-03 17:47:50
157
原创 机器学习的常用评价指标总结
分类任务TP (True Positive) 真正例: 被模型预测为正的正样本。FP (False Positive) 假正例:被模型预测为正的假样本。FN (False Negative) 假负例:被模型预测为负的正样本。TN (True Negative) 真负例:被模型预测为负的负样本ACC 精确度:这个指标容易受到样本数量以及样本是否均衡带来的影响。...
2021-08-03 17:31:20
471
原创 LeetCode 18. 4Sum 做题记录
思路:一般会用到hash,这道题参考花花酱的。class Solution {public: vector<vector<int>> fourSum(vector<int>& nums, int target) { sort(nums.begin(), nums.end()); if (target > 0 && target > 4 * nums.back()) retu...
2021-07-14 11:09:51
138
原创 在ubuntu20.04下安装opencv4(C++版)
1. 更新sudo apt-get updatesudo apt-get upgrade2. 安装依赖项$ sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev $ sudo apt-get install libjpeg-dev libpng-dev libtiff5-dev libjasper-dev l
2021-07-12 12:13:51
2463
6
转载 ubuntu 20.04下设置Vim的tab键为四个空格
找到vim的配置文件:vi /etc/vim/vimrc在vimrc文件尾部添加:set tabstop=4set softtabstop=4set shiftwidth=4set expandtab参考:https://www.jianshu.com/p/162c19cc9c11
2021-07-12 10:47:26
1066
原创 数字图像学习笔记 -- 数字图像基础
一 成像模型我们用二维函数来表示图像。在空间坐标处的值是一个标量,其物理意义由图像源决定,其值与物理源辐射的能量成正比。区间称为亮度级(灰度级)。实际工作中常将这类区间表示为或,其中表示黑色,表示白色。二 图像取样和量化1. 取样和量化的基本概念对于一幅连续图像,我们需要将它转化成数字形式。一幅图像的坐标和坐标是连续的,其幅度也是连续的。要将函数数字化,就要对该函数的坐标和幅度进行取样。对坐标值进行数字化称为取样(采样),对幅度值进行数字化称为量化。2. 数字图像表示...
2021-04-26 19:19:27
1087
原创 看《机器视觉表面缺陷检测技术及其在钢铁工业中的应用》笔记
通过图像分割,边界检测,图像特征提取与分类的基础理论。机器视觉钢材表面缺陷检测基本框架结构中的成像单元和缺陷分析单元都属于图像处理算法领域:1. 成像单元能够实现对图像数据的压缩及图像的清晰表达;2. 缺陷分析单元需要实现对缺陷类型的正确理解,并对缺陷进行统计,获得工艺中需要的数据,从而指导生产。1994年,Piironen提出一套比较完整的钢材表面缺陷检测与分类方法:预处理过程;图像压缩方法,缺陷检出;自适应缺陷检测方法,缺陷图像理解与分析;信息的提取技术和模糊集理论的算法。..
2021-04-25 17:14:51
1683
原创 记录参加DataWhale的CV实践_语义分割--赛题理解与baseline
赛题:地址:https://tianchi.aliyun.com/competition/entrance/531872/information
2021-03-01 13:00:18
239
1
原创 Ubuntu Linux安装docker
首先在终端下输入:sudo apt install docker.io 安装后,查看版本信息:docker version在这里会出现一个问题:Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/version: dial uni.
2021-02-18 23:40:36
137
原创 opencv代码示例 -- 创建图片/Canny边缘检测
创建图片(比原图片长宽各缩小一半)#include <opencv2/opencv.hpp>int main(int argc, char** argv){ cv::Mat img1, img2; cv::namedWindow("Example1", cv::WINDOW_AUTOSIZE); cv::namedWindow("Example2", cv::WINDOW_AUTOSIZE); img1 = cv::imread("dog
2021-01-23 21:49:43
109
原创 LeetCode 669. Trim a Binary Search Tree 做题记录
题目:/** * 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(nullp
2021-01-21 09:30:28
105
原创 opencv代码示例 -- 简单高斯滤波
代码示例不讲原理,只展示代码,原理另一篇博文会写。#include <opencv2/opencv.hpp>int main(int argc, char** argv){ cv::Mat img = cv::imread("dog.bmp"); cv::namedWindow("Example1-in", cv::WINDOW_AUTOSIZE); cv::namedWindow("Example1-out", cv::WINDOW_AUTOSIZE); cv::
2021-01-20 17:39:29
161
原创 opencv源码学习 -- 阅读cvdef.h文件
#ifndef OPENCV_CORE_CVDEF_H#define OPENCV_CORE_CVDEF_H//! @addtogroup core_utils//! @{#ifdef OPENCV_INCLUDE_PORT_FILE // 用户提供带有自定义平台配置的头文件#include OPENCV_INCLUDE_PORT_FILE#endif#if !defined CV_DOXYGEN && !defined CV_IGNORE_DEBUG_BUILD_G.
2021-01-20 16:41:32
1152
1
原创 LeetCode 122. Best Time to Buy and Sell Stock II
题目:采用动态规划来做这道题。class Solution {public: int maxProfit(vector<int>& prices) { const int len = prices.size(); if (len < 2) return 0; vector<vector<int>> dp(len, vector<int>(2, 0));
2021-01-20 16:34:26
63
原创 LeetCode 718. Maximum Length of Repeated Subarray 做题记录
题目:利用动态规划,来解这道题class Solution {public: int findLength(vector<int>& A, vector<int>& B) { const int m = A.size(); const int n = B.size(); vector<vector<int>> dp(n + 1, vector<int>(m
2021-01-19 16:32:20
86
原创 LeetCode 101. Symmetric Tree 做题记录
题目:利用深度优先算法,依次对数组进行遍历。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: b
2021-01-12 15:24:24
68
原创 LeetCode 561.Array Partition I 做题记录
题目:先对数组进行排序,然后进行数的累加,隔一个数累加一个。class Solution {public: int arrayPairSum(vector<int>& nums) { sort(nums.begin(), nums.end()); const int n = nums.size(); int sum = 0; for (int i = 0; i < n; i += 2) {
2021-01-12 15:08:57
74
原创 LeetCode 442. Find All Duplicates in an Array 做题记录
题目:我的思路是先对数组排序,然后看其中的数和它的下一个数是不是相等的,如果相等,我就将这个数放进一个新创建的数组中,最后再返回它。class Solution {public: vector<int> findDuplicates(vector<int>& nums) { vector<int> res; sort(nums.begin(), nums.end()); const int
2021-01-12 14:57:39
66
原创 LeetCode 199. Binary Tree Right Side View 做题记录
题目:Given a binary tree, imagine yourself standing on the right side of it, return the values of the nodes you can see ordered from top to bottom.我用深度优先算法来做的这道题。/** * Definition for a binary tree node. * struct TreeNode { * int val; * .
2021-01-12 14:40:55
69
原创 LeetCode 48.Rotate Image 做题记录
题目:You are given an n x n 2D matrix representing an image, rotate the image by 90 degrees (clockwise).You have to rotate the image in-place, which means you have to modify the input 2D matrix directly. DO NOT allocate another 2D matrix and do the rotat
2021-01-11 13:52:21
89
原创 opencv源码学习 -- 阅读interface.h文件
此文件在项目中的位置:opencv-master/modules/core/include/opencv2/core/hal这个接口文件定义了很多的数据类型,以及很多后面需要的宏定义。#define CV_HAL_ERROR_OK 0#define CV_HAL_ERROR_NOT_IMPLEMENTED 1#define CV_HAL_ERROR_UNKNOWN -1这段代码是对opencv检测相机的结果的三种宏定义。返回代码信息0,1,-1。#ifdef __cplu..
2021-01-07 13:18:11
548
原创 用pytorch实现一个简单的线性回归模型
我们使用pytorch实现一个简单的线性回归模型。(我是在jupyter notebook下做的,建议在这个环境下写代码)首先我们先定义数据集:#数据集中的样本值x = [35.7, 55.9, 58.2, 81.9, 56.3, 48.9, 33.9, 21.8, 48.4, 60.4, 68.4]#数据集中的标签y = [0.5, 14.0, 15.0, 28.0, 11.0, 8.0, 3.0, -4.0, 6.0, 13.0, 21.0]x = torch.tens
2021-01-01 18:02:17
644
1
原创 pytorch代码示例笔记 -- Autograd
这篇博文是我记录学习pytorch的一些代码例子,我会时不时来看这些代码加深学习例子来自https://pytorch.org/tutorials/beginner/pytorch_with_examples.htmlimport torchimport mathdtype = torch.floatdevice = torch.device("cpu")x = torch.linspace(-math.pi, math.pi, 2000, dt
2020-12-30 01:43:19
403
4
原创 深度学习随笔 -- 卷积神经网络
我主要看邱锡鹏的神经网络与深度学习来学习的(花书到时候会去看看)用全连接前馈网络来处理图像,会存在一下问题:参数太多 局部不变性特性(这块能用数据进行增强)而卷积神经网络是一种具有局部连接,权重共享等特性的深层前馈神经网络。一个典型的卷积神经网络是由卷积层,汇聚层,全连接层交叉堆叠而成。卷积神经网络有三个结构上的特性:局部连接,权重共享,汇聚卷积层它的作用是提取一个局部区域的特征,不同的卷积核相当于不同的特征提取器。比如对于图像的卷积层,它的一部分卷积层的大小会为高.
2020-12-28 16:55:23
367
原创 读libsvm数据文件(几行代码解决)
首先将libsvm数据文件格式改成txt文件格式。然后代码如下:from sklearn.datasets import load_svmlight_fileX_train, y_train = load_svmlight_file("housing_scale.txt")
2020-12-27 21:19:56
623
1
原创 C++笔记 -- 类(上)
类的基本思想是数据抽象和封装。数据抽象是一种依赖于接口和实现分离的编程技术。类的接口包括用户所能执行的操作;类的实现则包括类的数据成员,负责接口实现的函数体以及定义所需的各种私有函数。封装实现了类的接口和实现的分离。封装后的类能隐藏它的实现细节,类的用户只能使用接口而无法访问实现的具体部分。比如我定义一个book类,书有名字,书号,编号等:class book { public: book(string& book_name, string& book_no
2020-12-27 21:14:48
149
原创 opencv源码学习 -- 起步
我最近在学习数字图像处理这门课,对里面的有些算法很感兴趣,并且我的研究方向也是计算机视觉,opencv在计算机视觉里面的角色尤为重要(我觉得阅读opencv的源码可以学到很多东西吧?)。我平时都是五分钟热度,但是我还是希望我在这件事上能坚持下去吧~opencv源码的地址:https://github.com/opencv/opencv...
2020-12-15 18:19:51
243
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人