题目1

题目描述

输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。
import java.util.*;
public class Solution {public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) {ArrayList<Integer> list = new ArrayList<Integer>();if(input.length<k||k==0)return list;for(int i=0;i<k;i++){list.add(input[i]);}for(int i=k;i<input.length;i++){int max_index = getMax(list);int max_val = list.get(max_index);if(max_val>input[i]){list.set(max_index,input[i]);}}return list;}public int getMax(ArrayList<Integer> list){int max_index = 0;for(int i=0;i<list.size();i++){if(list.get(max_index)<list.get(i))max_index=i;}return max_index;}
}

题目2

题目描述

输入一个整型数组,数据元素有正数也有负数,求元素组合成连续子数组之和最大的子数组,要求时间复杂度为O(n)。
找规律得到的算法:

public class Solution {public int FindGreatestSumOfSubArray(int[] array) {if(array==null||array.length==0)return 0;int result = array[0],num=0;for(int i=0;i<array.length;i++){if(num<=0)num=array[i];elsenum+=array[i];if(num>result)result=num;}return result;}
}

题目3

题目描述

求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。

纯属找数字规律的题。提供一种最一般的解法

public class Solution {public int NumberOf1Between1AndN_Solution(int n) {int count=0;while(n>0){String str=String.valueOf(n);char [] chars=str.toCharArray();for(int i=0;i<chars.length;i++){if(chars[i]=='1')count++;}n--;}return count;}
}

题目4

题目描述

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
import java.util.ArrayList;
import java.util.*;
public class Solution {public String PrintMinNumber(int [] numbers) {ArrayList<Integer> list = new ArrayList<Integer>();for(int i=0;i<numbers.length;i++){list.add(numbers[i]);}Collections.sort(list,new Comparator<Integer>(){public int compare(Integer a,Integer b){int s1 = Integer.parseInt(a+""+b);int s2 = Integer.parseInt(b+""+a);return s1>s2?1:-1;}});StringBuilder sb = new StringBuilder();for(Integer i:list)sb.append(i+"");return sb.toString();}
}

题目5

题目描述

把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
import java.util.*;
public class Solution {public int GetUglyNumber_Solution(int index) {if(index==0)return 0;Queue<Integer> q2 = new LinkedList<Integer>();Queue<Integer> q3 = new LinkedList<Integer>();Queue<Integer> q5 = new LinkedList<Integer>();q2.add(2);q3.add(3);q5.add(5);int num=1,min,ugly=1;while(num!=index){ugly = Math.min(q2.peek(),Math.min(q3.peek(),q5.peek()));if(ugly==q2.peek()){q2.add(ugly*2);q3.add(ugly*3);q5.add(ugly*5);q2.poll();}if(ugly==q3.peek()){q3.add(ugly*3);q5.add(ugly*5);q3.poll();}if(ugly==q5.peek()){q5.add(ugly*5);q5.poll();}num++;}return ugly;}
}

题目6

题目描述

在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
import java.util.*;
public class Solution {public int FirstNotRepeatingChar(String str) {if(str.length()==0)return -1;HashMap<Character,Integer> hm = new LinkedHashMap<Character,Integer>();char[] chars = str.toCharArray();for(Character c:chars){int times;Integer i = hm.get(c);times=(i==null)?1:i.intValue()+1;hm.put(c,times);}int index=0;;for(Character c:hm.keySet()){int k = hm.get(c);if(hm.get(c)==1){index = str.lastIndexOf(c);break;}}return index;}
}

转载于:https://www.cnblogs.com/chz-blogs/p/9380929.html

算法学习之剑指offer(六)相关推荐

  1. python连续质数计算_GitHub - xxqfft/AlgorithmsByPython: 算法/数据结构/Python/剑指offer/机器学习/leetcode...

    尝试用Python实现一些简单的算法和数据结构 之前的算法和数据结构基本都是用Swift写的,现在尝试用Python实现一些简单的算法和数据结构. update 20160704 准备加入<剑指 ...

  2. 算法leetcode|剑指 Offer 27. 二叉树的镜像|226. 翻转二叉树(rust很强)

    文章目录 剑指 Offer 27. 二叉树的镜像|226. 翻转二叉树: 样例 1: 限制: 分析 题解 rust go c++ java python 原题传送门:https://leetcode. ...

  3. python数据结构与算法刷题——剑指offer第二版加部分leetcode题

    说不清楚,只能看代码理解的用红色标出 查找算法:查找较排序来说较简单,不外乎顺序查找和二分查找.哈希表查找和二叉排序树查找.(很多面试官喜欢让应聘者写出二分查找(如test53)的代码)[注意:二分查 ...

  4. 最新算法校招编程-剑指offer、Leetcode常考题目及解法分享

    本资源整理了BAT.TMD等互联网算法岗校招面试过程中常考的LeetCode和剑指offer编程题:此外,还整理了部分百度.腾讯.阿里.今日头条相关的面试经验,对于正准备校招面试的同学非常值得参考复习 ...

  5. 算法题解(剑指Offer篇)

    文章目录 栈与队列(简单) *剑指 Offer 09. 用两个栈实现队列 - 12.27 剑指 Offer 30. 包含min函数的栈 - 12.27 链表(简单) *剑指 Offer 06. 从尾到 ...

  6. 算法题001 剑指Offer 面试题三:二维数组中的查找

    剑指Offer题目1:二维数组中的查找 题目描述: http://ac.jobdu.com/problem.php?cid=1039&pid=0 在一个二维数组中,每一行都按照从左到右递增的顺 ...

  7. 剑指offer六十一之序列化二叉树(待补充)

    一.题目 请实现两个函数,分别用来序列化和反序列化二叉树 二.思路 三.代码 --------------------------------------------- 参考链接: 转载于:https ...

  8. 剑指offer六:旋转数组的最小数字

    题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋 ...

  9. Python 编程进阶经典算法逻辑编程 剑指Offer

    目录 1. 找到数组中重复数字(字符),返回出现频次最多 2. 给定一个二维数组,其每一行从左到右递增排序,从上到下也是递增排序.给定一个数,判断这个数是否在该二维数组中. 3. 从尾到头打印链表 4 ...

最新文章

  1. 防火墙对nginx服务器有影响
  2. java获取下周一整周的日期_当前日期得到本周的开始和结束日期
  3. 没有上司的舞会(洛谷-P1352)
  4. 算法基础知识(考试复习)
  5. vivo X Fold跑分曝光:搭载骁龙8+12GB内存
  6. python stdout,在Python中的Stdout编码
  7. Mysq 5.7l服务无法启动,没有报告任何错误
  8. cxgrid 行合并单元格_Excel合并单元格无法筛选和排序,你必须掌握这3个小技巧...
  9. C++中#includeXXX.h和#includeXXX.h的区别
  10. abaqus结果名称
  11. 数字电视CA原理与破解方式
  12. 使用Python,matplotlib绘制Nomogram列线图
  13. 计算机电源大小,常见电脑主板和电源尺寸
  14. 服务器未能识别网络,服务器无法识别url中特殊字符的处理方式
  15. 【Build】关于-fPIC, -fpic, -fpie, -fPIE的一点理解
  16. 计算机应用基础学习网站,《计算机应用基础》学习手册.pdf
  17. “性冷淡”的企业聊天工具,里面的秘密比陌陌还多
  18. 计算机键盘分为哪几个键区,标准键盘一般分为哪四个键区
  19. 简述现代计算机系统如何进行多级划分,现代计算机系统是如何进行多级划分?...
  20. 浙江工商大学计算机专硕调剂2019,浙江工商大学2019年硕士研究生调剂预通知

热门文章

  1. MyBatis-Plus自动填充功能填坑
  2. yum安装 vs 源码编译安装
  3. python paramiko并发_python paramiko 多线程批量执行指令及批量上传文件和目录
  4. mpu6050 z轴校准_大渡口区上门校正检定量具外校-第三方检测计量出校准证书
  5. springboot上传文件同时传参数_Spring Boot 系列:使用 Spring Boot 上传文件
  6. element upload预览_vue2.0 使用element-ui里的upload组件实现图片预览效果方法
  7. 【kerberos】kerberos 认证 详情介绍
  8. 【kafka】kafka 消费的时候 退出
  9. 【kafka】Flink 消费 kafka Received unknown topic topic/partition may not exist Describe access to it
  10. 【Elasticsearch】Nori:官方的韩语分析插件Elasticsearch