- 博客(15)
- 收藏
- 关注
原创 LeetCode刷题 题12.整数转罗马数字
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。通常情况
2021-05-21 15:07:22 189
原创 LeetCode刷题 题11.盛最多水的容器
给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。示例 1:输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。思路:双指针1)首先i, j两
2021-05-20 17:31:27 181
原创 LeetCode刷题 题9. 回文数
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。示例 2:输入:x = -121输出:false解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。思路:使用字符串来进行处理,函数string s = to_string(x)是将数值x转化为字符串s,reverse(s1.begin(), s1.end()); /
2021-05-20 11:00:15 223
原创 LeetCode刷题 题8.字符串转换整数 (atoi)
请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。函数 myAtoi(string s) 的算法如下:读入字符串并丢弃无用的前导空格检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。将前面步骤读入的这些数字转换为整数(即,“123” -
2021-05-19 11:23:37 178
原创 LeetCode刷题 题7. 整数反转
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。示例 1:输入:x = 123输出:321思路:与判断回文数一样,来进行判断,但是很重要的一点就是溢出问题;因为存储的范围是-2147483648 —— 2147483647当x为负数,则每次判断num是不是比INT_MIN/10(即-214748364)小,若小则一定溢
2021-05-19 11:22:42 213
原创 LeetCode刷题 题6.Z字形变换
将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “PAYPALISHIRING” 行数为 3 时,排列如下:P A H NA P L S I I GY I R之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“PAHNAPLSIIGYIR”。题目理解如下图所示:形状相当于将Z字先向右镜像在顺时针旋转90度思路:1)用vector容器来创建字符串数组;2)对字符串s进行遍历,用vector数
2021-05-18 10:51:51 169
原创 LeetCode刷题 题5. 最长回文子串
给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = “babad”输出:“bab”解释:“aba” 同样是符合题意的答案。思路:从中心往两边扩散只有两种情况:1 abad的情况,从b开始往两边扩散;2 abbad的情况,从bb开始往两边扩散。string longestPalindrome(string s) { int len = s.size(); if(len < 2) //若s的长度为0或1,直接返回s
2021-05-18 10:51:08 59
原创 LeetCode刷题 题4. 寻找两个正序数组的中位数
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。示例 :输入:nums1 = [1,2], nums2 = [3,4]输出:2.50000解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5思路:合并之后排序,再找中位数; 但是要注意int与double类型转换的问题。double findMedianSortedArrays(vector<int>& nums1,
2021-05-17 10:00:00 82
原创 计算机网络笔记
第一章 概述1 计算机网络的两个重要功能: 连通性、共享连通性:计算机网络使上网的用户都可以交换信息。如远程桌面连接共享:指资源共享,如:信息共享、软件共享、硬件共享。如共享打印机2 计算机网络:由若干个结点和连接这些结点的链路组成。互联网:网络之间通过路由器互连起来所构成的覆盖范围更大的网络;因特网(Internet):世界上最大的、开放的,由众多网络相互连接而成的特定互联网;万维网(www): 环球信息网,是互联网所能提供的服务其中之一,是基于互联网运行的一项服务;主机:与网络相连的计
2021-05-17 09:34:43 727
原创 C++容器笔记
STL1 STL的诞生 长久以来,软件界一直希望建立一种可重复利用的东西; C++的面向对象和泛型编程思想,目的是复用性的提升; 大多情况下,数据结构和算法都未能有一套标准,导致被迫从事大量重复工作; 为了建立数据结构和算法的一套标准,诞生了STL。C++面向对象的三大特性:封装、继承、多态。2 STL基本概念 STL(standard template library,标准模板库) STL从广义上分为:容器(container)、算法(algorithm)、迭代器(itera
2021-05-15 16:40:35 200
原创 leetcode 刷题 题3. 无重复字符的最长子串
题目:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 :输入: s = “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。思路:滑动窗口思想遍历s,并判断s[i]在容器lookup中是否有重复元素,若有的话,使用while循坏,清除掉lookup中s[i]前面的元素(s[i]不清除)。若没有重复,则将s[i]插入lookup容器中,并使用函数max(当前长度
2021-05-15 09:43:17 310
原创 leetcode 刷题 题2.两数相加
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807思路:1)先分别统计两个链表的长度为len1, len2;2) 让两个链表长度一样,便于做加法。具体操作是让短的链表添加结点,添加的结点值为0;3)
2021-05-14 12:23:35 103
原创 leetcode 刷题 题1.两数之和
leetcode 刷题 题1.两数之和给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。思路:两层for循坏,第一个for循坏控制左
2021-05-12 10:45:29 111
原创 二叉树的创建和遍历
二叉树的创建和遍历如图所示的二叉树,我们用C++来实现其创建和三种遍历(前序、中序、后序)。 对于这样一个二叉树,我们按照前序输入应该是s = “ABD###CE##F##”,相当于D也有两个儿子,只不过为空而已。(#表示空)创建的程序如下:#include<iostream>using namespace std;#include<string.h>struct BiNode{ char data; BiNode *lchild, *rchil
2020-12-29 19:41:50 228 1
原创 BF(回溯)算法分析
标题 BF(回溯)算法分析1 BF(回溯)算法若看目标串T是否是源串S的子串,可采用BF算法,具体实现如下所示:设 T = “qwer”, S = “aqwdqwerd”S = a q w d q w e r dT = q w e r第一步将T0与S0比较,q不等于a;第二步将T0与S1比较,相等;第三步将T1与S2比较,相等;第四步将T2与S3比较,不相等;此时将T从头再来,与S[2]比较;再依次进行上面的重复步骤,来判断T是否是S的子串。具体c++代码见下:#includ
2020-12-21 10:31:29 521
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人