自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 12.整数转罗马数字

将罗马数字和对应的阿拉伯数字对应起来,然后从大到小依次相减,知道减为0即可,这里我们通常会想到用map来存储相对应的键值对,但是map会进行自动排序,并且是从小到大的去排序内部的数字,而unorderd_map不会进行排序,但是我们使用map的情况一般来说是想通过某一个关键字来快速找出相对应的数,而本题只需要将罗马数字和阿拉伯数字对应起来即可,所以我们这里也可以使用pair来存储键值对。常用的if造火箭解法,就是将大数字写在前面,然后使用if来不断的排除来进行求解,这里直接贴出代码,就不进行讲解了。

2024-09-13 10:45:08 246

原创 247 H指数

不进行排序,直接依照原数组进行解,先假设h为1,然后找引用超过1篇的论文数量,如果满足,则再假设h为2。这样比较慢,时间复杂度为o(n方)。直接进行排序,然后进行比较就好。

2024-06-12 22:02:22 277 1

原创 跳跃游戏二

【代码】跳跃游戏二。

2024-06-05 22:00:20 336

原创 189.轮转数组、 121.买卖股票的最佳时机

其实就是先将整个数组进行反转,然后将整个数组分成2个部分,前k个数字为一个部分,后(n - k)个数字为一个部分。并且三个反转部分代码及其相似,所以可以使用函数来封装这一部分代码。2 但这种方式做了很多无用功,简化一下就可以变成:将元素向右移动k个位置,那可以先将后k个元素拿出来放入一个新的数组中,然后将前(n - k )个元素向后移动k个距离,最后将新数组中的元素复制到原数组的前k个位置中。1.常见的方法也是用数组,一轮改变一个元素,也就是每一轮将元素往后推一位,推k轮即可。3. 这也是我最推荐的方法。

2024-04-15 21:58:37 149

原创 88.合并两个有序数组、 27.移除元素

【代码】88.合并两个有序数组。

2024-03-27 21:34:07 122

原创 【无标题】

【代码】【无标题】

2024-03-21 20:15:29 196

原创 【无标题】

双指针法:桶所能容纳的最大容量为短板的高度和桶的两端的差值。让i和j分别指向vector的两端,i和j分别向内移动,若移动长板,则结果一定变小;若移动短板,则结果可能变大,也可能变小。所以最大值一定存在于短板指针向内移动的过程中。因此,初始化双指针分列水槽左右两端,循环每轮将短板向内移动一格,并更新面积最大值,直到两指针相遇时跳出;

2024-03-20 19:50:11 168

原创 C语言再认识(基于C Primer Plus的重新整理)

C语言再认识从printf()看输出从scanf()角度来看待输入如何终止while循环从printf()看输出1、 请求printf()函数打印数据的指令要与待打印数据的类型相匹配,这是我们刚开始接触到printf()函数时就学习到的,即一个待打印项对应一个打印说明。2、printf()函数的返回值我们大部分时间都将printf()函数当做一个输出指令来调用,但它其实同样是C中的一个内置函数,同样有返回值。printf()返回打印字符的个数(通俗来讲就是打印输出中的字符串长度)嵌套printf

2021-01-25 16:11:30 542 3

原创 如何禁用笔记本电脑自带的键盘和触控板以及如何恢复

刚回家的时候,坐在桌子上准备开始今天的学习时,突然发现以前专门放书本的地方不足以放下自己的电脑、键盘、副屏等东西。但是习惯了在宿舍或者实验室中东西的摆放顺序。使得刚回家时不是很适应,所以改造了一番。但是键盘还是找不到地方来放置,或者说放的很靠后,打字或者学习时间久了之后就会很累。并且为了防止误触等问题,所以我就想到了将笔记本电脑的键盘和触控板都禁用。具体操作下面会讲方法一:第一步,找到桌面上“此电脑”图标,右键进入属性;2、在新窗口的左栏菜单中,选择“设备管理器”选项打开;3、巡视设备管理器列表

2021-01-18 22:00:59 7021 2

原创 App Extension简介

这里写目录标题什么是App Extension工作原理什么是App Extension众所周知,iOS的安全性是非常高的。其对应用程序中的数据存储是通过沙盒模式进行的。所以在当时要实现应用之间的数据共享来说是非常困难的。功能共享就更加棘手了。但是在iOS8系统之后,苹果就引入一个非常有前瞻性的功能:扩展。在之后我们可以通过扩展来使app见数据甚至是功能进行共享。在app extension出现后,突破了两个重要的iOS限制,那就是由Open In系统创建的应用程序之间的不必要的数据复制和无法替换苹果键盘

2020-12-21 23:34:40 644

原创 iOS视频通话问题总结及心路历程。。。

1、注册腾讯云账号,并完成实名认证2、开始一个新项目3、在终端导入TRTC_SDK(在cocoapods中安装精简版),然后更新本地库(pod install)4、在App的info.plist中添加摄像头和麦克风权限然后就可以在项目中添加TRTC-SDK模块了※:是否添加TRTC-SDK支持后台运行(现在好像还打不开)今日问题:1、该语言可能是Swift语言2、如何接通User-Sig(就是密匙)今日学习内容:1、学习了SDK和API的区别2、导入了腾讯云的SDK并且在info中添加了

2020-12-17 13:25:06 726

原创 SDK和API的简单区别

SDK和API的简单区别什么是SDK、APISDK和API之间的区别什么是SDK、API在之前的项目中,我接触到了API作为接口来进行网络请求数据的操作,但在刚学习SDK时,我有点懵了,这俩到底有什么区别呢,我下来举个简单的例子,可能就会对这两者有比较清晰的认识了。API是什么?在日常生活中,我们可以见到很多类似API的场景:在QQ和微信并不发达的时候,我们大多数人通常会使用USB线去连接手机和电脑,然后传输自己想要的应用或者是文件等,在这里,电脑和手机上连接数据线的接口就相当于“API”接口。

2020-11-30 18:46:40 235

原创 KMP算法

KMP算法的实现一般字符串匹配算法KMP算法中前缀表的计算KMP算法匹配问题KMP算法的深层原理一般字符串匹配算法也称为暴力算法,基本思想就是依次将两个字符串的每个字符进行比较,若出现不相同的字符,则终止比较,并将字符串向后移动一位,重新开始进行匹配。下面是图片解释:但我们可以发现,该方法很繁琐,效率很低,那么有什么方法可以更加便利的找到之前已经匹配好的字符串端,然后开始匹配呢?这样就可以进出我们的KMP算法了。KMP算法中前缀表的计算首先,在看KMP算法之前,我们需要知道一个叫前缀表的东西

2020-10-18 17:39:11 179 2

原创 单例模式的了解

什么是单例模式单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问。 比如在有些进程当中,我们经常会用到用户信息,这就要求我们能够把用户信息存在一个统一的对象当中,以便于在整个进程中对信息进行增删查找等操作。通过上面这一段话,我们就大概了解了单例模式到底是个什么东西了。所谓单例模式,就是整个进程只存在一个实例对象的类。所以它的生命周期也就是进程的生命周期。只要app不被干掉,实例对象就不会被释放。使用

2020-09-28 15:35:15 275

原创 iOS中push和present的区别

push和present都可以推出新的界面present和dismiss对应使用,push和pop对应使用需要注意的一点是:present只能逐级返回,而push所有视图都由视图栈控制,可以返回上一级,也可以返回到根视图控制器或者其他控制器。在开发过程中,经常会遇到两个视图控制器的转换。而导航控制器是最常用的一种,这里简单介绍一下push和present的使用和区别吧1、使用使用UINavigationController时使用push方法: 例如:[self.navigationControll.

2020-09-26 14:43:33 371

原创 MVC的学习和使用

MVC模式是软件工程中的一种软件架构模式。把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。Model: 程序的数据部分,用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法;View: 程序的界面展示,实际上是数据有目的的界面显示,但视图绝不与model直接交互,在视图中一般没有程序上的逻辑;Controller: 将Model与View连接起来协同工作的部分,控制器起到不同层面间的组织作用,用于控制应用程序的流程。...

2020-09-20 00:35:55 233

原创 求数组中最大值和次最大值的较优算法

先让最大值为数组首元素,然后用max和数组的每一个值进行比较,若小则交换,此时将max的旧值给次最大值submax。但如果数组中最大值在遍历前就已经找到,那么submax将不再更新,所以在max值不更新的时候,要将submax与最近遍历到的数组与元素进行更新,以保证submax得到数组中的次大值代码如下:#include<stdio.h>#include<stdlib.h>int main() { int n; printf("请输入数组个数:"); scanf("%

2020-09-13 21:00:04 2081

原创 CocoaPods的配置及使用和Masonry的简单使用

配置CocoaPods配置有问题的可以看这篇博客,写的非常仔细CocoaPods的配置.CocoaPods的使用先在工程中创建一个Podfile文件。//cd后面的是你创建的工程在电脑上的地址,你也可以直接把文件拖进去在终端中输入:$ cd /Users/liyang/Desktop/CocoaPodsTest进来之后就创建终端输入:$ touch Podfile3、编辑你想导入的第三方库的名称及版本使用vim编辑Podfile文件终端输入:$ vim Podfile

2020-09-13 07:29:53 424

原创 iOS深复制与浅复制

iOS深浅复制概念应用场景集合类对象和非集合类对象单层深复制和完全深复制完全深复制的实现概念浅复制:主要拷贝的是对象的引用值,并没有进行真正的复制,复制的对象和原对象都指向同一个地址。深复制:主要是将原对象的属性值拷贝过来,而原对象的属性值并不发生变化,复制的对象指向了新的地址,深拷贝和浅拷贝的本质是地址是否相同通俗理解为:浅拷贝好比你的影子;而深拷贝好比克隆人,(这里加一个图片,就是关于深复制和浅复制是地址的重新分配)应用场景在iOS里,copy与mutableCopy都是NSObject里

2020-08-11 23:50:55 172

原创 协议传值

协议传值在数值回调的时候用的比较广泛一般来说过程是从A -> B -> A的一个传递方式。在a中,既然要接受别人的传值,那么就要在a中声明该协议,在所声明的协议方法中得到想要的数值。在b中,既然要给别人传值,那么就要声明代理属性(可以传具体的数值或者将某些数值打包为类整体传递过去)例如:将一个Account类从从SecondViewController传到FirstViewController//FirstViewController.h文件#import <Foundat

2020-08-02 23:40:10 120

原创 UISegmentedControl简单使用

这里写目录标题应用场景常用属性和方法应用场景在某一个界面中,我们会对某些内容进行一个大致的划分,这时候我们就需要用到UISegmentedControl控件来实现它。它们常用于在不同类别的信息之间选择,或在不同的应用屏幕之间切换。UISegmentedControl的使用方法类似于UIButton, 它不仅可以提供多个选择操作, 并且也可以响应交互事件。UISegmentedControl就是继承自UIButton的。常用属性和方法 NSArray *segmentedArray = [[NSArr

2020-07-27 20:39:32 654

原创 iOS开发课程学习笔记

学习日记UILabel的用法UIButton用法UITextField的用法导航栏控制器分栏控制器UILabel的用法1、创建: UILabel *text =[ [UILabel alloc]initWithFrame:CGRectMake(20,64,100,30 )];[self.view addSubview:text];以上为text分配了空间与具体的坐标,大小,并把该label展示在view上。2、接下来就是设置颜色,文字,文字颜色,文字大小等应用text.backgroundCol

2020-07-19 23:42:48 144

原创 笔记

封装封装是面向对象的三大特征之一,它指的是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法来实现对内部信息的操作和访问。良好封装的目的隐藏类的实现细节让使用者只能通过事先预定的方法来访问数据,从而在该方法中加入控制逻辑,限制对成员变量的不合理访问可进行数据检查,从而有利于保证对象信息的完整性。便于修改,提高代码的可维护性OC中的4个访问控制符@private(当前类访问权限),该类成员变量被修饰之只能在当前类的内部访问,实现部分定义的成员

2020-06-28 05:24:32 80

原创 OC笔记

OC笔记self关键词的使用成员变量模拟类变量单例模式self关键词的使用概念它总是指向该方法的调用者。最大的作用就是让类中的一个方法访问该类的另一个方法或成员变量。#import <Foundation/Foundation.h>@interface Student : NSObject-(void)sleep;-(void)study;@end #import "Student.h"@implementation Student-(void)sleep{

2020-06-21 09:39:15 198

原创 转圈打印矩阵(二维数组)实战

题目描述:将一个n行n列的数组元素按升序顺序转圈打印到该矩阵中。想法:元素输入从0行0列开始,用变量brint不同的值来表示每次需要转弯的拐点,然后进行判断每一个拐点来对内外层循环变量做出相应的改变。代码实现:#import<Foundation/Foundation.h>const int SIZE = 4;int arr[SIZE][SIZE];int main(int argc, char *argv[]){ @autoreleasepool{ int rie

2020-06-13 07:46:07 284

原创 插入排序与归并排序

插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列。每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置。如此迭代直到全部元素有序。归并排序进行如下迭代操作:首先将原始序列看成 N 个只包含 1 个元素的有序子序列,然后每次迭代归并两个相邻的有序子序列,直到最后只剩下 1 个有序的序列。现给定原始序列和由某排序算法产生的中间序列,请你判断该算法究竟是哪种排序算法?输入格式:输入在第一行给出正整数 N (≤100);随后一行给出原始序列的 N 个整数;最后一行给出由某排序算法

2020-05-31 00:44:08 881

原创 sprintf函数的用法

sprintf()函数包含在stdio.h头文件中sprintf和printf函数非常相似,sprintf函数是将变量打印到字符串中,其实就是一种粘贴的格式(要注意的是该字符串的大小一定要大于本事需要赋值的变量,否则会出现内存溢出。),而printf函数是将其打印在屏幕上。sprintf函数的格式:int sprintf( char *string_buffer, const char *format_string[, args] );除了前两个参数固定外,可选参数可以是任意个。buffer是字符.

2020-05-24 17:18:31 443

原创 快速排序的两种算法

快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影。现在我们就来学习一下快速排序的两种形式:快速排序的两种形式交换法埋坑法交换法假设我们现在对“6 1 2 7 9 3 4 5 10 8”这个10个数进行排序。先将第一个数当成基准数,然后以i, j当成哨兵分别指向数组的首尾.

2020-05-17 01:06:34 406

原创 单链表的基本操作

我们对链表有了一个初步的认识之后,就要开始学习对链表的一些基本操作,例如对链表的数据的添加,删除,查找和更改文章目录带头节点的链表的创建(头插法和尾插法)链表的输出数据的插入数据的删除数据的查找数据的更改带头节点的链表的创建(头插法和尾插法)typedef struct Link{ int data; struct Link *next;} link; //头插法link *create1(){ link *head = (link *)malloc(sizeof(link)); he

2020-05-08 23:11:32 147

原创 四种作用域

当程序较大时,需要考虑将程序分解成若干个部分,此时文件和函数之间的标识符可能会遇到重名冲突,所以要对标识符的作用范围进行更为细致的考虑和规划。 根据C语言标识符的作用范围,可以将作用域分为4种:函数原型作用域,函数作用域,块作用域和文件作用域。下来我们就来介绍一下这四种作用域。文章目录函数原型作用域函数作用域块作用域文件作用域函数原型作用域它指的是在声明函数原型时所指定的参数标识符的作用范围...

2020-05-02 16:31:00 3830

原创 双指针的用法及题解

双指针的用法以及题解双指针在算法中经常用到,它的目的主要是用于遍历数组或者检查链表中的一些问题,两个指针指向不同的元素,从而协同完成任务。双指针主要分为两种:快慢指针和左右指针。1、快慢指针 快慢指针是指移动的步长,即每次向前移动速度的快慢。示例 找到未知长度单链表的中间结点分析 定义两个指针,都指向单链表的第一个元素,让第一个指针的移动速度是第二个指针的速度的两倍,...

2020-04-25 19:01:14 307

空空如也

空空如也

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

TA关注的人

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