自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Java】剑指offer——连续子数组的最大和

**题目:**输入一个整形数组,数组里有正数也有负数。数组中一个或连续多个正数组成一个子数组。求左右子数组和的最大值。要求时间复杂度为O(n).**例如:**若输入数组为{1,-2,3,10,-4,7,2,-5} 则它的最大和子数组为{3,10,-4,7,2},和为18思路解析:我们此时首先应该从数组起始位置开始遍历,且只能遍历一次(要求了时间复杂度),所以我们先定义一个sum和一个最大值m...

2020-02-25 11:23:10 275

原创 【Java】剑指Offer——找出数组中出现次数超过数组长度一半的数字

1、思想概述:首先,我们默认这个数组是未经过排序的无序数组。要找出在数组中长度超过一半的数字,那么我们可以先将数组进行排序处理,排序完成后取到数组的中间下标,然后返回该数,则此数一定是要求的数字。在这里我用了冒泡排序,效率比较低,想要进行优化可以换一种排序方式。2、代码实现:import java.util.Arrays;import java.util.Scanner;public...

2020-02-25 11:22:55 440

原创 【Java】剑指offer——输出一个十进制转二进制中1的个数

1、思路概述:在这里我们用到了按位与运算&。如,若要求n转二进制后的1的个数,那么我们将n和n-1进想按位与运算后对n进行更新,每更新一次1的个数就+1,最终得到1的个数。2、代码实现:public static void main(String[] args) {int n=21;}public static int find1(int n){/*将十进制数转换成二进制数后...

2020-02-25 11:22:44 755

原创 【Java】剑指offer——输出一个可以被分解的整数的分解数

例如:输入一个18 18可被分解为18=233代码实现:public class FenJie { public static int fenjie(int a){ int i=2; for(i=2;i<=a;i++){//从2开始找质数,1是所有数的质数 while (i!=a){//当i!=a的时候 ...

2020-02-25 11:21:54 360

原创 【Java】剑指Offer——合并两个有序链表

1、思路概述:首先要明确的是当我们合并完两个有序链表后,新的链表也依旧还是要有序。所以,我们首先要定义两个指针分别对两个链表进行遍历,再定义一个指针从空开始存储两个链表中挑选出来的数字。当一个链表为空时,将剩下的一个链表全部输入即可。2、代码实现:public void merge(Link<T> link){Link<T> link1=new Link<&g...

2020-02-25 11:21:46 293 3

原创 leetcode——最长回文(马拉车)

1、思想概述:求最大回文长度,例如,adfaddddaerg中,可以把构成回文的就是adddda,故此字符串的最大回文长度为6.回文:即一个字符串正着反着读都一样的,如上面说的adddda或noon等.当我们求解此问题时,首先会想到暴力的遍历数组,枚举数组中所有字串,然后再进行比较,但是这样做它的时间复杂度达到了O(n^3),十分不理想,所里这里提出了马拉车算法解决这个问题,可以将时间复杂度...

2020-02-25 11:21:38 459

原创 【Java】剑指offer——替换字符串中的空格使其成20%

1、思路概述:首先,我们拿到这道题要考虑的是如果要在当前的数组上将空格替换,那么必定会溢出。所以我们采用了以下几种方法把空格数先计算出来,然后对数组进行扩容,再在数组尾部定义一个指针从尾部开始后移(不用再将每个字符串向后覆盖了),然后遇到空格用20%替换,结束;但是上面的方法虽然看起来简单但是要对数组遍历两边,影响了程序的时间复杂度;优解:因为此处是单线程,所以用StringBulider...

2020-02-25 11:21:10 340

原创 【Java】剑指offer——两个链表的第一个公共节点

题目:求两个链表的第一个公共节点1、思路概述:要找两个链表的公共节点首先要知道链表的长度,那么我们首先就要遍历两个链表,的到链表长度后,若长链表长m短链表长n,那么就要让长链表先比锻炼表走m-n步,开始遍历,值相同后进行返回,的到解。但是上面这种方法需要两次遍历链表,效率不是很理想。我们可以利用HashMap的特性,将链表1的值存到HashMap中,然后再调用contains方法对链表2的值...

2020-02-25 11:20:57 222 2

原创 回溯算法——打印123的所有子集

1、思路概述:用回溯算法打印123的所有子集,打印出来即为1,12,13,123,2,23,3。所以当遇到这种要求子集的问题时,我们首先想到的就是回溯算法的子集树思想。static int [] brr; public static void backstrace(int [] array,int i){ if(i==array.length){ for...

2020-02-25 11:20:46 1371

原创 回溯算法——子集树 求一个数组中两部分的最小差值数组

1、思路概述:求一个数组中两部分的最小差值,即将一个数组分成两部分,这两部分要求差值最小。例如:{1,2,3,5,7},那么在这个数组中,可以被分为{1,3,5}{2,7}两个数组使其差为0,是其差为最小。由题目要求可见,我们还是要牵扯到求出问题的自己的过程,所以自然而然的就要涉及到回溯算法——子集树的问题。2、代码实现:static int[] brr;//辅助数组 stati...

2020-02-25 11:20:32 898

空空如也

空空如也

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

TA关注的人

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