自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 快速排序(Swift实现)

func quickSort(_ arr: inout [Int], _ low: Int, _ high: Int) { //需要排序的区间只包含一个数字,则不需要重排数组,直接返回。 if low < high { let pivot = partition(arr,low,high) quickSort(arr,low,privot - 1) quickSort(arr,privot + 1,high) }}privat

2022-05-05 21:50:50 1003

原创 哈夫曼编码(Swift实现)

哈夫曼编码 (Swift实现)func huffmanCode(_ &p: Node, _ numsLeafs: Int, _ &codes: String) { //p为节点数组的指针,codes为string数组的指针 //parent表示父节点位置 let parent: Int = 0 //每次对一个叶子节点进行编码 //i表示当前叶子节点的位置 for i in 0..<numsLeafs {

2022-05-03 21:05:02 920

原创 寻找最长回文字符串

最长回文字符串(leetcode5)这是晴天小猪无数次打开无数次尝试失败又无数次悻悻退出的玄学题目。然而今天的美团视频面试恰恰考了这道题,晴天小猪抓耳挠腮,还顺便抽了一张纸擤鼻涕,装模做样的分析和提出三种解决方案……首先,晴天小猪根据刷字符串这一类型题的判断和直觉得出一个重大结论:得用双指针!晴天小猪想到三种双指针:第一,快慢指针,类似与龟兔赛跑,通过比对龟和兔所在元素的值来判断是否满足回文的条件。第二,头指针尾指针,一个在头,一个在尾,不停的比对不停的比对第三,中心扩散法,如果元素个数为奇

2022-04-18 21:26:46 537

原创 【计算机网络】持续更新中……

1. HTTP和HTTPS的区别1.HTTPS 需要向机构申请 CA 证书,极少免费。2.HTTP 属于明文传输,HTTPS基于 SSL 进行加密传输。3.HTTP 端口号为 80,HTTPS 端口号为 443 。4.HTTPS 是加密传输,有身份验证的环节,更加安全。2. 对称加密和非对称加密的区别对称加密指的就是加密和解密使用同一个秘钥,所以叫做对称加密。对称加密只有一个秘钥,作为私钥。常见的对称加密算法:DES,AES,3DES等等。非对称加密指的是:加密和解密使用不同的秘钥,一把

2022-03-27 15:39:04 3819

原创 凤凤牌烤面筋

一公司杭州异世界面试时间2022.02.22面试时长7min面试结果未OC简单自我介绍面试官问:平时怎么学习iOS的?是用的swift吗?看得懂OC吗?技术题:1.UIButton的响应者链是怎么样的?iOS 从UIButton学习响应者链及相关技术_王颜华的博客-CSDN博客答:UIButton->UIView(subView没有可忽略)->UIView(superView)->UIViewController->UIWind

2022-03-15 21:53:13 2249

原创 【iOS开发面试】操作系统学习笔记

一、什么是操作系统1 操作系统的概念,功能,目标1.1 概念操作系统:是指控制和管理整个计算机系统的硬件资源和软件资源,并合理地组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口环境,它是计算机系统中最基本的系统软件。1.2 功能作为系统资源的管理者;作为用户和计算机硬件之间的接口易混概念:系统调用 = 系统调用命令 = 广义指令实现对硬件机器的扩展1.3 小结2.操作系统的特征2.1 并发并发:指两个或多个事件在同一时间间隔内发生。

2021-11-25 20:49:31 1733

原创 华中农业大学信息管理与信息系统【信息安全与保密】实验报告

信息安全与保密试验报告1.实验目的本次实验使用Xcode作为开发工具,swift作为主要开发语言,简单编写应用页面,对信息安全与解密课程中的加密与解密进行具体直观地呈现,将理论和实践结合起来巩固强化知识的吸收与运用。算法实现部分主要使用AES算法,RSA算法进行加密和解密,使用MD5摘要算法进行加密。2.实验过程2.1 搭建页面主要页面元素如下:class ViewController: UIViewController,UITextFieldDelegate { var fl

2021-11-21 15:08:18 2459

原创 【iOS开发】从小白到低水平开发者进厂实习自救指南

本篇文章的观点来自笔者对一些文章的总结和归纳,以及结合自身的理解。1.准备的工具工欲善其事,必先利其器。再结合了大牛们的经验文章后,主要有以下两个工具值得推荐:1.OneNote(Windows系统office自带)2. 幕布OneNoteOneNote是一款Office内的笔记软件,大多数Windows电脑都会默认安装。为什么放着系统自带的这么优秀的软件不用呢?OneNote的优势有可以在页面任何地方插入资料和编辑。如果同时拥有平板的话,还可以云端同步,用笔在上面写写画画,增强记忆。此外On

2021-11-19 20:22:23 2191 1

原创 Quartz2D绘图技术

Quartz2D绘图技术1.前言在iOS中,无论采用哪种技术,都离不开UIView,绘制都发生在UIView对象的区域内。如果是默认视图,绘制工作是由iOS系统自动处理的;如果是自定义视图,则必须重写drawRect:方法,在此之前提供相应的绘制代码。2.实例...

2021-11-17 18:20:57 100

原创 【日常练习】217.存在重复元素

给定一个整数数组,判断是否存在重复元素。如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3,3,4,3,2,4,2]输出: trueclass Solution { func containsDuplicate(_ nums: [Int]) -> Bool { v

2021-11-16 17:13:47 2099

原创 【平时练习】探索插入位置

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例 1:输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4示例 2:输入: nums = [-1,0,3,5,9,12], target = 2输出: -1解释: 2 不存在 nums 中因此返回 -1提示:你可以假设 nums 中的所

2021-11-16 16:49:06 440

原创 二分法查找模板

https://leetcode-cn.com/problems/binary-search/solution/leetcode-offer-er-fen-cha-zhao-san-da-mo-0mn7/

2021-11-16 15:48:39 236

原创 11、手势识别

手势识别1、手势种类iOS提供了7种常用的手势API,包括Tap(单击),Long Press(长按),Pan(平移),Swipe(滑动),Rotation(旋转),Pinch(手指的合拢和张开),和Screen Edge Pan(屏幕边缘平移)2、手势识别器在iOS设备上识别手势有两种实现方式:采用手势识别器(UIGestureRecognizer)和触摸事件(UITouch)手势识别器是一个抽象类,不过它有七个具体类:UITapGestureRecognizerUIPinchGestur

2021-11-15 17:36:30 643

原创 视图控制器与导航模式

视图导航器与导航模式1.导航模式平铺导航模式:内容没有层次关系,展示的内容都放置在一个主屏幕上,采用分屏或者分页控制器进行导航,可以左右或者上下滑动屏幕查看内容。标签导航模式:内容被分成几个功能模块,每个功能模块之间没有什么关系。通过标签管理各个功能模块,点击标签可以切换功能模块。树形结构导航模式:内容是有层次的,从上到下细分或者具有分类包含等关系。2.模态视图在导航过程中,有时候需要放弃主要任务转而做其他次要任务,然后再返回到主要任务,这个次要任务就是在模态视图中完成的。默认情况下,模态视

2021-11-14 17:24:21 548

原创 iOS中的表视图

表视图1.表视图分类普通表视图。主要用于动态表,一般在单元格数目未知的情况下使用。分组表视图:可以用于动态表和静态表。动态表分组时,单元格分成不同的部分,而每一部分中单元格中的数据是相似的。静态表分组时,会将功能相似的视图放在一起。由于iOS标准控件中没有复选框控件,所以一般使用选择表视图来代替其他平台的复选框控件...

2021-11-11 19:27:50 1124

原创 视图中的委托协议、数据源协议与高级视图

视图中的委托协议、数据源协议与高级视图一些高级视图的功能比较复杂,我们需要将这些复杂功能从视图本身剥离开来,由另外一些类完成。当然,这些类需要遵守视图指定的协议。相对简单的视图——只指定了委托协议,包括UITextField和UITextView,对应的委托协议命名规则是**“视图名+Delegate”**对于一些比较复杂的视图,我们同时制定委托协议数据源协议,这些视图在iOS中不是很多,其中主要有选择器(UIPickerView)、集合视图(UICollectionView)和表视图(UItabl

2021-11-10 20:59:47 976

原创 【日常练习题】合并两个有序数组

给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。** 解题思路:运用双指针以及尾插法创建数组。首先创

2021-11-04 21:57:24 251

原创 CocoaTouch框架与构建应用界面

CocoaTouch框架与构建应用界面​ 苹果应用程序的界面几乎都是由Cocoa和Cocoa Touch框架中的类和协议等元素构建的,这些元素通过MVC(Model-View-Controller)模式有效地组织起来。​ macOS应用的界面主要使用Cocoa框架开发,Cocoa是一种为应用程序提供丰富用户体验的框架,其核心是:Foundation和UIKit(AppKit)框架。**iOS应用界面主要使用Cocoa Touch框架开发,核心是Foundation和UIKit框架。**Cocoa Tou

2021-11-02 23:37:03 826

原创 UIView和视图

UIView与视图1.标签和按钮class ViewController:UIViewController{ var label:UILabel! //这个属性是strong的 override func viewDidLoad(){ super.viewDidLoad() let screen = UIScreen.main.bounds let labelWidth:CGFloat = 90 let l

2021-11-02 23:33:26 152

原创 剑指 Offer 04:二维数组中的查找

二维数组的查找解题思路:在有序数组进行元素的查找,应该从顶点入手,本题从左下角的顶点入手,依次将target与有序数组中的元素进行比较class Solution { func findNumberIn2DArray(_ matrix: [[Int]], _ target: Int) -> Bool { var row = matrix.count - 1 var col = 0 while row >= 0 && col <= mat

2021-10-30 21:53:18 104

原创 学会用纯代码创建iOS工程

纯代码创建iOS工程(swift)https://www.jianshu.com/p/cc901be44773?utm_medium=timeline&utm_source=oschina-app这篇博文作者写的非常详尽,可以一试!

2021-10-28 21:17:53 340

原创 剑指Offer 32:从上到下打印二叉树

剑指 Offer 32: 从上到下打印二叉树广度优先遍历class solution { func levelOrder(_ root: TreeNode?) -> [[Int]] {guard let rootVal = root else {return [[Int]]()var result = [[Int]](()//结果返回的二维数组var queue = [TreeNode]()//队列queue.append(rootVal)var curBlancecount =

2021-10-28 20:29:04 86

原创 【日常练习题】1.两数之和

两数之和题目描述:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。示例1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例2:输入:nums = [3,2,4], target = 6输出:[1,2]示例3:输入:nums = [3,3], target = 6输出:[

2021-10-24 20:02:33 75

原创 剑指 Offer 50:第一个只出现一次的字符

第一个只出现一次的字符核心解题思路:运用字母的ASCII码值来进行比对解题思路:先判断字符串为空的一种情况(比较简单)。接着开始分析怎么才能取出只出现一次的元素们,再接着考虑将在这些元素里第一个出现的return出来设定一个用来比对的字符“a",ASCII码值为97(swift里可以调用asciiValue方法来得出字母的ASCII码值)设定一个用来存储原字符串中各(字母)元素出现次数的数组,数组初始化将所有元素置为0。进行字符串内的遍历循环,用字符的ASCII码值和“a”的差值作为数组元

2021-10-21 20:15:14 164

原创 剑指 Offer 11:旋转数组的最小数字

旋转数组的最小数字** 解题思路:遍历查询,不停地把最小值赋值给minNum,遍历结束返回minNum.**class Solution { func minArray(_ numbers: [Int]) -> Int { var minNum : Int minNum = numbers[0] for i in numbers{ if i < minNum { minNum = i conti

2021-10-20 22:08:56 130

原创 剑指 Offer 53 :0~n-1中缺失的数字

0~n-1中缺失的数字** 解题思路:设定一个初始变量i,对数组中的元素进行遍历,每判断i与数组中的元素j相等,i值增加1,continue进行下一轮循环,直到遇到两数不等,输出当前i值即可**class Solution { func missingNumber(_ nums: [Int]) -> Int { var i : Int = 0 for j in nums{ if i == j{ i += 1 c

2021-10-20 22:00:46 109

原创 剑指 Offer 53 在排序数组中查找数字

在排序数组中查找数字** 解题思路:遍历查找,if判断并返回**class Solution { func search(_ nums: [Int], _ target: Int) -> Int { var targetnum : Int = 0 for i in nums { if i == target{ targetnum += 1 } } return targetnum }}

2021-10-20 21:19:43 98

原创 计算机网络笔记(一~三章)

计算机网络一、概述1.因特网概述1.1 网络、互联网和因特网网络:是由若干个结点和连接这些结点的链路组成。多个网络还可以通过路由器互连起来,构成一个覆盖范围更大的网络,即“网络的网络”——互联网。因特网(Internet)是世界上最大的互联网络。⚠Internet和internet的区别:Internet:因特网,是专有名词,用来指全球最大的,开放的,由众多网络相互连接而成的特定计算机网络,它采用TCP/IP协议作为通信的规则,其前身是美国的ARPANET。internet:互联网,

2021-10-20 21:03:07 869

原创 剑指 Offer 03: 数组中重复的数字

查找数组中重复的数字class Solution { func findRepeatNumber(_ nums: [Int]) -> Int { //先设置一个原始Int类型的变量存储重复的数字 var repeatnum:Int = 0 for i in 0..<nums.count{ for j in 0..<i{ //双重遍历判断并将重复数字赋值给repeatnum返回 if nums[i]

2021-10-17 21:54:17 69

原创 剑指offer24:反转链表

反转链表双指针法来解决这道题class Solution { func reverseList(_ head: ListNode?) -> ListNode? { if head == nil || head?.next == nil { return head } var node = head var reverseNode:ListNode? = nil

2021-10-17 21:28:14 107

原创 剑指offer06:从尾到头打印链表

从尾到头打印链表** 单链表一般是按顺序从头到尾one by one打印出来,所谓从尾到头打印链表就是:生成一个逆序的”链表“并打印出来,其实可以建立一个数组,一个一个取出原来链表中的元素插入数组中(头插法),再将数组打印出来即可实现这个功能。**代码实现如下:class Solution { func reversePrint(_ head: ListNode?) -> [Int] { var result:[Int] = [] var node = hea

2021-10-16 21:33:01 107

原创 剑指offer58:左旋字符串

左旋字符串首先先明白什么叫”左旋字符串“?给定一个字符串s,再给定一个小于字符串长度的整数n。先将字符串前n位(左边n位)的字符子串逆序得到新字符串s1;再将字符串第n+1位直到最后一位的字符字串逆序s2;依次将s1和s2拼接起来得到s3,再将s3逆序。例如给定一个字符串:ABCdefghi,在给定一个n值为3,左旋之后结果为defghiABC可以看出,左旋后的结果是以n位字符串为分界点,截取后的两段子串交换位置再拼接成为一个新字符串。代码实现如下:class Solution {

2021-10-16 20:46:04 133

原创 剑指offer30:包含min函数的栈

包含min函数的栈解题思路:运用swift内置的方法属性完成各个功能的实现class MinStack {//初始化,建立一个数组 var stack1:[Int] = [] /** initialize your data structure here. */ init() { } //入栈 func push(_ x: Int) { stack1.append(x) } //出栈 func pop() { s

2021-10-14 20:05:32 95

原创 剑指offer:用两个栈实现队列

如何用两个栈实现队列首先要清楚栈是先进后出,队列是先进先出的。这里用到是类似于数学的 “负负得正” 的思想。先用stack1将数据存进去,再依次取出stack1 pop出来的数据append进入stack2里,最后再把stack2里的数据pop出来,即可完成先进先出的效果。class CQueue { //定义两个数组,stack1用来存数据,stacke2用来推数据 var stack1: [Int] = [] var stack2: [Int] = [] init()

2021-10-13 21:52:25 77

原创 Xcode 功能简介以及底层逻辑详解

Xcode 功能简介以及底层逻辑详解通过Xcode创建工程启动Xcode,点击“create a new project”,在打开的“Choose template for your new project”中选择你要创建的工程模板从下图可以看出,iOS工程模板分为两类——Application和Framework&Library1、Application类型:single view app:可以构建单个视图的应用game:可以构建基于iOS的游戏应用augumented reali

2021-10-10 17:28:53 3533

原创 iOS开发常用的几个网站

简易制作APP图标canva 可画根据需求简单设计一款APP图标(素材大多免费,成品可以下载)App Icon Generator可以将刚刚生成的图标转化成适合iPhone,iPad或者iwatch尺寸大小,成品可以形成一个压缩包下载下来。...

2021-09-06 15:16:02 192

原创 Java程序 设计概述

Java程序设计概述1.1 Java程序设计平台Java是一个完整的平台,有一个庞大的库,其中包含了很多可重用的代码和一个提供诸如安全性、跨操作系统的可移植性以及自动垃圾收集等服务的执行环境。1.2 Java白皮书的关键术语简单性面向对象网络技能健壮性安全性体系结构中立可移植性解释型高性能多线程多态性1.3 Java Applet与Internet在网页中运行Java的程序称为Applet。为了使用Applet,需要启动Java

2021-02-07 20:35:14 360 1

原创 1.5包机制

包机制为了更好组织类,Java提供了包机制,用于区别类名的命名空间包的本质其实就是文件夹*** 一般利用公司域名倒置作为域名**eg:com.baidu.xxx为了能够使用某个包的成员,需要在Java程序中使用"import"语句明确导入包。import java.util.Date;//*是通配符,导入这个包下所有类...

2020-12-07 23:14:15 141

原创 1.4基本运算符

基本运算符//二元运算符//Ctrl+D:复制当前行到下一行long a=1234567L;int b=123;short c=10;byte d=8;//关系运算符返回值的结果:正确,错误 布尔值int m=1;int n=2;int s=27;//取余,模运算System.out.println(a+b+c+d);//LongSystem.out.println(b+c+d); //IntSystem.out.println(c+d); //IntSystem.out.p

2020-12-07 23:08:17 129

原创 1.3变量,常量,作用域

变量,常量,作用域变量Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。Java是一种强类型语言,每个变量必须声明其类型。注意:每个变量都有类型,可以是基本类型或者引用类型变量名必须是合法的标识符变量声明是一条完整语句,每个声明都必须以分号结束;不建议一行声明多个变量(注重程序可读性)变量作用域类变量**(static**)实例变量局部变量**(必须声明和初始化值,只在方法内有用)**public class HelloWorld {

2020-12-07 23:07:07 74

空空如也

空空如也

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

TA关注的人

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