自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 OpenCL基本开发过程

OpenCL基本开发过程为了兼顾不同设备,OpenCL程序的第一步要确定执行OpenCL的平台确定执行OpenCL计算的设备创建上下文,上下文包括前面确定的OpenCL设备以及后面要创建的内存对象、程序对象和内核创建命令队列,主机与OpenCL设备间数据传输、执行内核等交互操作都要入队到命令队列中创建内存对象,分配内存空间从*.cl文件中读取内核源码,创建程序对象,编译程序对象,最后创建内核设置内核参数,设置工作组和工作项的参数将内核函数入队到命令队列中,命令队列提交给相应的OpenCL设

2021-07-19 10:37:49 336

原创 二叉树:构造二叉树

LeetCode106. 从中序与后序遍历序列构造二叉树https://leetcode-cn.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal/根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder = [9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树: 3 / \

2021-04-09 22:54:03 574

原创 动态规划:不同的二叉搜索树系列

LeetCode96. 不同的二叉搜索树https://leetcode-cn.com/problems/unique-binary-search-trees/给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1

2021-04-07 22:58:56 209

原创 回溯:棋盘问题

LeetCode51. N皇后https://leetcode-cn.com/problems/n-queens/n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。输入:n = 4输出:[[".Q..","...Q","Q...","..Q."],["..Q.","Q...","

2021-04-06 19:46:09 230

原创 回溯:排列问题

LeetCode46. 全排列https://leetcode-cn.com/problems/permutations/给定一个 没有重复 数字的序列,返回其所有可能的全排列。输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]思路回溯模板:void backtracking(选择列表,路径,结果) { if (终止条件) { 存放结果;

2021-04-06 19:43:54 106

原创 回溯:分割问题

LeetCode131. 分割回文串https://leetcode-cn.com/problems/palindrome-partitioning/给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。回文串 是正着读和反着读都一样的字符串。输入:s = "aab"输出:[["a","a","b"],["aa","b"]]思路回溯模板:void backtracking(选择列表,路径,结果) { if (终止条件)

2021-04-05 22:22:37 122

原创 回溯:子集问题

LeetCode78. 子集https://leetcode-cn.com/problems/subsets/给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]思路回溯模板:void backtracking(选择列表,路径,结果) { if (终止条件)

2021-04-05 22:21:49 189 1

原创 回溯:组合问题

LeetCode77. 组合https://leetcode-cn.com/problems/combinations/给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。输入: n = 4, k = 2输出:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]思路回溯模板:void backtracking(选择列表,路径,结果) { if (终止条件) { 存放结果;

2021-04-05 22:20:44 162

原创 栈和队列:应用

LeetCode20. 有效的括号https://leetcode-cn.com/problems/valid-parentheses/给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。输入:s = "()"输出:true思路使用栈辅助解题。分析三种不匹配的情况:1.字符串里左括号多余 ,所以不匹配。(()[]{} //左括号多余 2.字符串里括号

2021-04-04 22:59:48 89

原创 数组:经典排序

LeetCode912. 堆排序https://leetcode-cn.com/problems/sort-an-array/给你一个整数数组 nums,请你将该数组升序排列。输入:nums = [5,2,3,1]输出:[1,2,3,5]思路采用堆排序。首先,将数组调整大根堆;然后,每次将队头元素与队尾元素交换,队尾元素已放到最终位置,对队头元素向下调堆(重新调整为大根堆)。循环此操作直到大根堆中仅剩一个元素。代码class Solution {private: void

2021-04-04 17:15:34 117

原创 栈和队列:操作

LeetCode232. 用栈实现队列https://leetcode-cn.com/problems/implement-queue-using-stacks/请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返回队列开头的元素boolean empty() 如果队列为空,返回

2021-04-03 23:22:59 71

原创 链表:操作

LeetCode707. 设计链表https://leetcode-cn.com/problems/design-linked-list/设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。在链表类中实现这些功能:get(index):获取链表中第 index 个节点的

2021-04-03 23:00:11 155

原创 字符串:操作

LeetCode344. 反转字符串https://leetcode-cn.com/problems/reverse-string/编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出输入:["h","e","l","l","o"]输出:["o","l","l","e","h"]思路使用双指针法。定义一个left在下标0的位置上,定义right在下标sz - 1的位置上,交换两者;left向右移动同时right向左移动,交换两者,直到left == ri

2021-04-03 16:17:08 143

原创 某笔试:一道贪心

题目对一个序列可以操作任意次,每一次操作可以让某一个位置上的数加1,但是每一个位置的数最多只能操作一次。通过这个操作能让新产生的序列中最多有多少个不同的数。输入: nums = [1, 2, 2, 2, 5, 6]输出: 5说明: 序列变为[1, 2, 3, 2, 5, 6],此时不同元素最多思路先将数组排序。使用贪心算法,贪心就贪在仅对与前一个元素相等的元素进行加1操作遍历数组,使用变量pre记录前一个数组元素,按照当前数组元素与pre的关系分为三种情况:当前数组元素等于pre:当前

2021-04-02 22:49:16 154

原创 某笔试:一道动态规划

LeetCode514. 自由之路https://leetcode-cn.com/problems/freedom-trail/电子游戏“辐射4”中,任务“通向自由”要求玩家到达名为“Freedom Trail Ring”的金属表盘,并使用表盘拼写特定关键词才能开门。给定一个字符串 ring,表示刻在外环上的编码;给定另一个字符串 key,表示需要拼写的关键词。您需要算出能够拼写关键词中所有字符的最少步数。最初,ring 的第一个字符与12:00方向对齐。您需要顺时针或逆时针旋转 ring 以使 k

2021-04-02 22:48:43 66

原创 哈希表:数组、set、map作哈希表

LeetCode242. 有效的字母异位词https://leetcode-cn.com/problems/valid-anagram/给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。输入: s = "anagram", t = "nagaram"输出: true输入: s = "rat", t = "car"输出: false思路使用数组作为哈希表。字符a到字符z的ASCII是26个连续的数值,所以字符a映射为下表0,相应的字符z映射为下表25。在遍

2021-03-30 23:21:43 656

原创 数组:二分查找

LeetCode704. 二分查找https://leetcode-cn.com/problems/binary-search/给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4思路这道题目中的数组是有序数组,这也是使用二分查找的基础条件。只

2021-03-30 22:30:08 464

原创 数组:双指针法

LeetCode27. 移除元素https://leetcode-cn.com/problems/remove-element/给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素输入:nums = [3,2,2,3], val = 3输出:2, nums = [2,2]解释:函数应该返回新的长

2021-03-30 22:28:03 756

原创 动态规划:打家劫舍系列

LeetCode198 打家劫舍Ihttps://leetcode-cn.com/problems/house-robber/你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷

2021-03-30 13:23:59 211

原创 动态规划:丑数系列

LeetCode263. 丑数https://leetcode-cn.com/problems/ugly-number/编写一个程序判断给定的数是否为丑数。丑数就是只包含质因数 2, 3, 5 的正整数。输入: 6输出: true解释: 6 = 2 × 3思路首先判断特殊情况,然后判断num是否能被2或3或5整除,可以整除就用num除以2或3或5,不可以整除就退出循环,最后判断最终结果是否为1,是1为丑数,不是1不为丑数。本题十分简单,仅作为下一题的铺垫代码class Solution

2021-03-29 23:16:39 109

原创 动态规划和单调栈:矩阵和正方形系列

LeetCode84. 柱状图中最大的矩形https://leetcode-cn.com/problems/largest-rectangle-in-histogram/给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。输入: [2,1,5,6,2,3]输出: 10思路(暴力)依次遍历柱形的高度,对于每一个高度分别向两边扩散,求出以当前高度为

2021-03-29 18:28:01 137

原创 动态规划:入门系列

LeetCode509. 斐波那契数https://leetcode-cn.com/problems/fibonacci-number/斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0,F(1) = 1F(n) = F(n - 1) + F(n - 2),其中 n > 1给你 n ,请计算 F(n) 。输入:2输出:1解释:F(2) = F(1) + F(0) = 1 + 0

2021-03-28 23:19:05 75

原创 动态规划:路径系列

LeetCode64. 最小路径和https://leetcode-cn.com/problems/minimum-path-sum/给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。输入:grid = [[1,3,1],[1,5,1],[4,2,1]]输出:7解释:因为路径 1→3→1→1→1 的总和最小。思路1.思考状态:找出最优解的性质,明确状态表示什么dp[i] [j] 表示第

2021-03-28 22:51:34 227

原创 动态规划:子序列系列及其扩展

LeetCode300. 最长递增子序列https://leetcode-cn.com/problems/longest-increasing-subsequence/给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。输入:nums = [10,9,2,5,3,7,101,18]输出:4解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。思路1.思考状态:找出最优解的性质,明确状态表示什么dp[i]表示数组nums[0 … i]的最长递增子序列的长度。2.思考

2021-03-28 17:26:24 104

转载 计算机操作系统 - 进程管理

计算机操作系统 - 进程管理进程与线程1. 进程进程是资源分配的基本单位。进程控制块 (Process Control Block, PCB) 描述进程的基本信息和运行状态,所谓的创建进程和撤销进程,都是指对 PCB 的操作。下图显示了 4 个程序创建了 4 个进程,这 4 个进程可以并发地执行。 2. 线程线程是独立调度的基本单位。一个进程中可以有多个线程,它们共享进程资源。QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 HTTP 请求线程、事件响应线程、渲染线程等等,线程

2021-03-19 16:00:00 139

原创 LeetCode题解 343.整数拆分:转换为完全背包求解

LeetCode343 整数拆分给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1。题解1.明确dp[i] [j]表示什么:首先,将问题转换为完全背包问题:正整数集合[1…n - 1],体积为i, 价格为i,用这些正整数(每个正整数可选用多次)去构成正整数n。dp[i] [j]表示用以 i为结尾的正整数集合构成正整数j所用的最大价格乘积。2.根据题意确定递推关系:d

2021-03-19 15:49:56 285 1

原创 算法练习三

算法分析与设计 练习三内容分别用KMP、Monte Carlo和Las Vegas算法编写subString,随机生成10000对、长度较长、且长度不等的01文本串X(haystack)和模式Y(needle)(三个程序处理相同的串)假设文本串长度为size1,模式串长度为size21.subStringKMP思路:(1).KMP的主要思想当出现字符串不匹配时,可以知道一部分之前已经匹配的文本内容,可以利用这些信息避免从头再去做匹配了。(2).next数组 == 前缀表(prefix tab

2020-12-20 16:08:29 164 1

原创 LRU缓存机制

LeetCode146 LRU缓存机制https://leetcode-cn.com/problems/lru-cache/题目:运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。实现 LRUCache 类:1.LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存2.int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。3.void put(int key, int

2020-12-20 16:05:03 177

原创 HDFS架构

Hadoop生态圈一.HDFS1.设计目标Namenode 和 DatanodeHDFS采用master/slave架构。一个HDFS集群是由一个Namenode和一定数目的Datanodes组成。Namenode是一个中心服务器,负责管理文件系统(fs)的名字空间(namespace),客户端(client)获得文件位置信息以及负责确定数据块到具体Datanode节点的映射。Namenode负责维护文件系统的名字空间,任何对文件系统名字空间的修改都将被Namenode记录下来。应用程序可以设置

2020-12-20 15:57:33 319

原创 数据库系统的实现和发展

*数据库系统的实现和现代发展**1数据库系统的基本概念*数据库系统是数据管理的有效技术,是计算机科学的重要分支。数据库系统是由数据库、数据库管理系统、应用程序和数据库管理员组成的组织、存储、管理、处理和维护数据的系统。*1.1数据库系统的发展趋势*数据模型是数据库系统的核心和基础。依据数据模型的进展,数据库系统的发展可以相应地分为三个发展阶段,即第一代的层次、网状数据库系统,第二代的关系数据库系统,以及最新一代的数据库家族。层状模型和网状模型都是格式化模型,它们从体系结构到数据库语言都具有相同的特

2020-12-15 15:25:25 1101

原创 动态规划总结一

LeetCode53.最大子序列和https://leetcode-cn.com/problems/maximum-subarray/给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。动态规划:1.递推关系(1).明确dp[i]表示什么:dp[i] 表示以nums[i]为结尾的最大子序列和假设nums数组长度为si

2020-11-11 17:55:45 109

原创 算法练习二

算法分析与设计 练习二内容一 最长公共子序列给定两个序列X和Y,编写程序找出X和Y所有的最长公共子序列。1.FindLCS源码:#include <iostream>#include <vector>#include <string>using namespace std;int longestCommonSubsequence(vector<vector<string>>& rec, const string&a

2020-11-11 15:37:58 127

原创 算法练习一

算法分析与设计 练习一内容一分别针对随机生成的若干组整数序列进行排序,排序算法使用四种方法。1.InsertSort源码:#include <iostream>#include <vector>#include <cstdlib>#include <ctime>using namespace std;//插入排序void InsertSort(vector<int>& nums){ int size =

2020-11-11 15:36:56 354

原创 动态规划:买卖股票的最佳时机问题

leetcode121.买卖股票的最佳时机 Ihttps://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6

2020-11-11 15:29:47 498

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除