自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 问答 (2)
  • 收藏
  • 关注

转载 【无标题】

Win64某些情况下无法直接打开Win32创建的文件夹1、解释下问题含义,指在一个64位Windows系统上面(譬如Win7x64,Win10x64),如果一个32位的程序调用系统API打开文件对话框(譬如打开文件,保存文件)或者打开文件夹对话框,在指向系统盘下的Windows\System32目录时,会发现实际指向的是Windows\SysWOW64目录问题。2、关于64位系统文件重定向问题,网上已经有很多文章进行了介绍,这里不再赘述(参考[1])。3、测试验证环境:Windows10 x64 19

2021-11-17 09:33:33 587

原创 OC-UIPickerView的循环显示

(1)虽然pickerView没有自带这种循环滚动的功能,但我们可以把行数设成一个很大的值。然后让其在初始化时默认选择中间位置的项目。这样用户不管向上,还是向下基本上不能一次滚到底。(2)同时我们在滚动停止后,还会自动将当前选中行移回到中间部分(当然动画要关闭,让用户察觉不到其实我们改变了选中行)。这样就会让用户保持无限滚动的幻觉。参考https://blog.csdn.net/LiJF_ve/article/details/47907099?utm_medium=distribute.pc_f..

2020-10-28 16:16:08 526

原创 OC-解决UITextField与UITextView限制输入长度时,拼音预输入问题

首先,在做输入限制长度时,使用- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string此代理方法会导致中文拼音输入时预输入状态被计算入限制长度中,导致拼音拼写时不能超出限制长度的范围。在经历了大量折磨后,终于找到了解决办法。1.在UITextView中,使用- (void)textViewDidChange:(UI

2020-10-14 19:45:02 698 1

原创 java-MYSQL常用语句以及MYSQL类型与java类型的对应

我们在编程时经常需要用到MYSQL,所以必须对一些常用语句掌握。创建数据库:create database 数据库名;删除数据库:drop database 数据库名;查询存储引擎:show engines;创建表:create table 表名(属性名 数据类型 [完整性约束条件],属性名 数据类型 [完整性约束条件],);设置表的主键:create table 表名(属...

2019-08-02 21:48:17 322

原创 java-集合之HashMap与HashSet与TreeMap分析

HashMap与HashSet的区别:第一,HashSet实现的是单列集合的Set集合。所以它没有索引,不能存储重复元素,且存取无序。而HashMap实现的是双列集合的Map集合。第二,HashMap使用的是key值来计算hashcode,而HashSet使用对象来计算hashcode,所以HashMap存储是键值对的形式存储,不能有重复的键。而是用HashSet存储对象的话,一般需要重写ha...

2019-07-30 20:26:31 175

原创 java-ArrayList与LinkedList与Vector的区别和比较

首先我们知道集合分为双列集合与单列集合,而单列集合又分为List和Set。而list与set集合的区别是什么?list集合是有索引的,允许存储重复元素,并且存取是有序的。相反set集合没有索引,不能存储重复元素,存取无序。而ArrayList,LinkedList和Vector都属于List集合,那么他们有什么区别和相同之处呢?ArrayList与LinkedList:相同:首先他们都...

2019-07-28 21:35:42 193

原创 java-利用集合实现斗地主

斗地主相信大家都玩过,怎么来实现一个简单的斗地主功能呢?思路:我们可以利用双列集合来实现它。首先把特殊牌大小王创建出来,然后创建一个集合来存储花色,另一个集合来存储A-K的牌。利用循环来讲花色与牌组合起来。然后打乱牌的顺序也就是洗牌过程。再创建三个集合,分别代表三个玩家来存储手牌,用一个集合来存储底牌。图解:实现代码:public static void main(String...

2019-07-28 00:28:05 1010 1

原创 java-两个栈实现一个队列

两个栈实现一个队列:我们都知道栈的特性为先入后出,而队列则是先入先出。如何使用两个栈来实现一个队列呢?思路:用栈s1作为存储空间,栈s2作为缓存空间。入队时,将数据压入s1中。出队时,将数据从s1中弹出再压入s2中,再从s2弹出一个数据,再次将数据弹出并压入s1中。出队操作图解:实现代码:class SeqStack{// 存储栈的元素的数组protected T[] sta...

2019-07-26 22:29:23 179

原创 java-约瑟夫环

约瑟夫环问题:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。思路1:就是通过一个数组,数组中每个元素都是一个人,然后对数组进行循环处理,每当数组中的人数到m时,将其标记为淘汰。直到最后数组中只有一个人未被淘汰。思路2:利用链表实现,因为链表...

2019-07-25 23:51:59 189

原创 java-回溯算法解决轮船装载问题

轮船装载问题:有一组物品,其重量分别是:w1,w2…wn现在有两艘轮船,其容量分别是C1和C2,满足w1+w2+…+wn <= C1 + C2问怎么装载物品,才能够把物品全部装上轮船?思路:(1)首先将第一艘轮船尽可能装满;(2)将剩余的集装箱装上第二艘轮船。将第一艘轮船尽可能装满等价于选取全体集装箱的一个子集,使该子集中集装箱重量之和最接近C1。由此可知,装载问题等价于以下...

2019-07-24 23:46:27 847

原创 java-回溯算法子集树概念及解决01背包问题

回溯算法:回溯算法是对搜索树的一种深度优先搜索。像大多数NP难问题一样,通过穷尽搜索数量巨大但有限多个可能性,可以获得一个解。而且,事实上对于所有这些问题都不存在用穷尽搜索之外的方法来解决问题。所以产生了开发系统化的搜索技术的需要,并且希望能够将搜索空间减少到尽可能小。回溯法就是一种组织搜索的一般技术。回溯法可以被描述为有组织的穷举搜索,它常常可以避免搜索所有的可能性。一般适用于求解那些有...

2019-07-24 00:00:37 954

原创 java-动态规划算法基本概念和解题思路,解决最大子段和的问题

首先我们要清楚java共有五大算法,分别是分治算法,回溯算法,贪心算法,分支限界法以及动态规划法。而我们也需要清楚的对每个算法的基本思维与概念有了认识,才能去学习使用它来解决问题。而动态规划法作为效率很高的求最优解的算法,我们要对它有所了解和掌握。那么动态规划算法到底是什么思维来解决问题的呢?首先动态规划算法的基本概念要清楚认识。1.动态规划的基本概念:动态规划过程是:每次决策依赖于当前状...

2019-07-22 23:07:15 967

原创 java-链表中环的入口节点

如果一个链表含有环的话,我们怎么去找到这个环的入口呢?思路:首先我们知道链表不像数组,有下标可以访问其中的元素。所以我们只能用别的方法来思考,这时我们可以想到利用快慢指针的方法。定义两个指针来同时遍历链表,快指针一次走两个节点,慢指针一次走一个节点。如果快指针=慢指针,我们就知道这个链表确实有环,而且相交的节点是在环内的。我们利用画图与数学知识不难得到快慢指针之间走过的路程关系。经过简单数学...

2019-07-20 22:32:33 225

原创 java-二叉树的镜像翻转

思路:1:递归,如果节点为空,返回,否则交换左右孩子指针;递归镜像节点的左子树,右子树;2:非递归:交换每一非叶子节点的左子树指针和右子树指针 ,利用队列,根节点先入队;交换队列第一个节点的左右孩子之针,然后把第一个节点的左右孩子入队,然后pop();直到队列为空;即遍历完毕;递归实现:public void mirror() {mirror(this.root);}/** * 求B...

2019-07-19 22:04:56 432 1

原创 java-二叉树的四种遍历的递归与非递归实现

首先我们需要了解二叉树的基本性质:1.每一个节点最多有两个孩子节点2.左孩子<根节点<右孩子四种遍历思路:前序遍历:根结点 —> 左子树 —> 右子树中序遍历:左子树—> 根结点 —> 右子树后序遍历:左子树 —> 右子树 —> 根结点层次遍历:仅仅需按层次遍历就可以义目录标题)而刚好由于这种性质,我们利用递归可以很简单的完成遍历...

2019-07-18 23:21:46 159

原创 java-输入一个单向链表,输出该链表中倒数第k个结点

输入一个单向链表,输出该链表中倒数第k个结点。思路一:首先我们可以想到的是遍历完整个链表然后从尾部回溯k个节点就能找到,但是单向链表不能从尾部向前遍历。这时,我们就可以想到先遍历一遍计算出总共的结点个数count,然后再从头部开始遍历到count-k,就能取到倒数第k个结点了。这个方法之间复杂度虽然为O(n),但是遍历了两次链表,对于结点个数不多的链表来说适用,但是数据量太大的话就比较影响效率...

2019-07-17 23:30:57 1407

原创 java-给一个数组,实现奇数在前,偶数在后的排序三种解法

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。思路一:从前向后找,找到一个数如果是偶数,就把这个数取出放到数组尾部,这个会产生数据的移动。时间复杂度也比较高,为O(n^2)。效率太低。思路二:申请两个大小相等的数组,然后将奇数放在第一个数组中,偶数放在第二个数组...

2019-07-16 23:23:40 6181 1

原创 java-倒序打印链表与逆置单链表

我们的链表有很多,单链表,双向链表,环链表等。这里是最普通的单链表模式,我们一般会在数据存储区域存放数据,然后有一个指针指向下一个结点。虽然 Java 中没有指针这个概念,但 Java 的引用恰如其分的填补了这个问题,也可以叫做地址域。思路:倒序打印我们首先能想到的是,因为链表具有next这个地址域指向下一个节点,所以正序利用循环可以很好的输出链表,然后可以将它们存储到一个数组中,这样在倒序遍...

2019-07-15 23:06:09 353

原创 java-利用前序和中序遍历重建二叉树

如果只给出一个二叉树的前序遍历和中序遍历怎么重建起一个二叉树呢?在剑指offer上给出这个题目,前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6}。思路:先来分析一下前序遍历和中序遍历得到的结果,前序遍历第一位是根节点;中序遍历中,根节点左边的是根节点的左子树,右边是根节点的右子树。首先,根节点 是{ 1 };左子树是:前序{ 2,4...

2019-07-15 21:34:37 376

原创 java-青蛙跳台阶

第一种:一只青蛙一次可以跳上 1 级台阶,也可以跳上2 级。求该青蛙跳上一个n 级的台阶总共有多少种跳法。第二种:一只青蛙一次可以跳上1级台阶,也可以跳上2 级……它也可以跳上n 级,此时该青蛙跳上一个n级的台阶总共有多少种跳法?思路一:当n=1时,只有一种 当n=2时,有两种 当n=3时,有三种 当...

2019-07-14 23:16:23 204

原创 java-红黑树的插入

红黑树作为树的一种,也是满足于BST树的基本性质的。在此基础上,红黑又多了几条自己的特性:1.每个节点都有颜色,不是黑色就是红色2.根节点必须是黑色3.所有叶子节点都是黑色,叶子节点是null节点,不存储实际数据4.每个红色节点必须有俩个黑色的子节点,也就是说不能出现连续两个红色节点5.从任一节点到其每个叶子节点的简单路径黑色节点的个数相同红黑树并不追求“完全平衡”——它只...

2019-07-14 21:34:02 313

原创 java-数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字

具体思路:如果一个数出现的次数超过数组一半的长度,那么就是说出现的次数比其他所有数字出现的次数还要多。因此我们可以考虑保存2个值,一个是数组中的一个数,一个是数的次数。当我们遍历到下一个数字的时候,如果下一个数字和我们之前保存的数字相同,则次数加1,如果不同则次数减1。如果次数为0了这保存当前遍历到的数,并把次数设为1。最后进行校验是否超过长度的一半。实际上还可以利用快速排序来进行,如果超过数...

2019-07-14 00:02:52 739

原创 java二分查找

二分查找法是查找算法中一种。它与普通的查找法比较节约了大量的时间和工作量。它的主要思想就是把待查找的数据先找到中间值,然后利用中间值与需要查找的数据比较,然后将待查找数据分为小于和大于中间值得两个部分,来确定它是在小于区还是大于区。然后再次取中间值,以此类推。利用递归来实现二分查找法更显得简洁:private int binarySearch(int[] arr, in...

2019-07-12 22:30:24 172

原创 java快速排序

快速排序的思想:可以分为三个步骤。1.先定下来一个基准数,当然这个数在一组数据的大小如果偏中间的话可以减少很多工作量2.将这组数据分为两个区,小于基准数据的放在左边,大于基准数的放在右边3.对左右两个分区继续进行比较分区操作,直到只剩下一个数时,就完成了排序快速排序的优点:没有额外的空间开销,排序速度快,并且数据的移动量较少快速排序的缺点:不稳定代码:...

2019-07-12 15:35:28 129

原创 利用集合中的一些特性简单解决问题

我们都知道集合中有set接口,而且set接口的特性之一就是:存储的元素不能重复,既然如此我们就可以利用此特性比较简单的解决一些问题。问题一:随机产生10个1-20以内的不重复整数思路:我们可以利用set集合来存储,这样一来它不仅可以自动筛选掉重复元素,同时也会对元素进行自然顺序的排序测试程序:public static void main(String[] args) { ...

2019-07-11 22:17:29 190

原创 java实现输入一个字符串,按字典序打印出该字符串中字符的所有排列。

首先我们拿到题目,应该考虑到是在考察字符串的全部排列。思路:第一步:我们可以先将字符串分为两部分,第一个字符和后面的字符 第二步:我们求出所有可能出现在第一个位置的字符,然后再和后面的字符交换,相同的不用换 第三步:固定第一个字符,然后求后面字符的排列,至于后面字符的排列,我们可以看作再次固定第一个字符,以此类推,用递归可以简单快速的解决这个问题...

2019-07-10 23:19:09 3557

原创 java之归并排序

归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。归并排序是一种外部排序,主要用来解决内存限制,数据无法一次放入内存,而这时需要用来归并排序来进行数据的排序处理。相比较来说...

2019-07-09 22:44:28 118

原创 java堆排序

堆排序的基本思想是:将待排序序列构造成一个大顶堆,此时,整个序列的最大值就是堆顶的根节点。将其与末尾元素进行交换,此时末尾就为最大值。然后将剩余n-1个元素重新构造成一个堆,这样会得到n个元素的次小值。如此反复执行,便能得到一个有序序列了测试程序:public static void main(String[] args) { int[] arr = new int[10];...

2019-07-08 22:05:59 103

原创 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

import java.util.Scanner;public classTest {public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.print("请输入排成一圈的人数:"); int n = s.nextInt(); boolean[] arr = n...

2019-07-07 22:54:57 170

原创 用双列集合实现计算一个字符串中每个字符出现的次数

首先是构建起逻辑过程:1.要一个字符串,键盘输入一个字符串2.创建一个Map<字符,次数>,键来存我们的字符,值来表示次数3.遍历字符串得到每个字符,for()循环遍历4.判断Map集合有没有我们的这个字符5.有,说明集合里面有或者我们之前已经出现过了,直接对值进行加1,++操作没有,第一步把字符存进去,次数为1;6.打印输出就可以下面是具体的代码实现:...

2019-07-07 09:27:06 250

原创 各种排序算法的复杂度比较和选择:

各种排序算法的复杂度比较: 排序算法 时间复杂度 空间复杂度(最坏情形) 最好 平均 最坏 冒泡排序 ...

2019-07-03 14:49:58 596

原创 BST树的定义

二叉搜索树(BST树):又叫二叉排序树,二叉查找树。它或者是一棵空树;或者是具有以下性质的二叉树: 1.每个结点都有一个数据域,且所有节点的数据域互不相同; 2.若它的左子树不为空,则左子树上的所有结点的值都小于根节点的值; 3.若它的右子树不为空,则右子树上的所有节点的值都大于根节点的值; 4.左子树和右子树都是二搜索树。 对二叉搜索树进行中序遍历的数据是...

2019-07-02 16:37:16 3523

原创 java集合

1.java中集合是用来干什么的 1). java操作比较多的数据是一般会用到数组,但是对于对象,数据比较庞大的数据,数组就不能满足java的需求,这样java就定义了集合这个类。 2).方便对多个集合进行操作,就使用到集合这个类2.java中的集合族的基本介绍1).Collection是集合类的根接口,Java中没有提供这个接口的直接的实现类。但有继承该类的两大接口类,就...

2019-06-23 11:02:50 153

原创 java基础知识点总结

java基本数据类型占用内存大小:占用一个字节:byte,boolean占用两个字节:short,char占用四个字节:int,float占用八个字节:long,double从java7以后:1.switch语句可以支持String字符串了2.常量池从方法区转移到堆上JVM基本的内存结构:JVM虚拟机栈,堆,方法区从java8以后:1.HashMap底层的链式哈希表,链表的节点...

2019-06-19 14:00:11 152

原创 java中常用关键字

关键字 含义abstract 表明类或者成员方法具有抽象属性assert 用来进行程序调试boolean 基本数据类型之一,布尔类型break 提前跳出一个块byte 基本数据类型之一,字节类型case 用在switch语句之中,表示其中的一个分支catch 用在异常处理中,用来捕捉异常char 基本数据类型之一,字符类型class 类const 保留关键字,没有具体含义...

2019-06-15 21:25:14 488

原创 java的基本程序设计结构

java的基本程序结构分为:▲一个简单的Java应用程序Java对大小写敏感。如果出现了大小写拼写错误,那程序将无法运行。关键字public称为访问修饰符,它用于控制程序的其他部分对这段代码的访问级别。关键字class表明Java程序中的全部内容都包含在类中。关键字class后面紧跟类名。Java中定义类名的规则很宽松。名字必须以字母开头,后面可以跟字母和数字的任意组合。长度基本上没有限制。但...

2019-04-03 19:38:15 147

空空如也

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

TA关注的人

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