1,题目:给定一个 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 中的所有元素是不重复的。
n 将在 [1, 10000]之间。
nums 的每个元素都将在 [-9999, 9999]之间。

链接:https://leetcode-cn.com/problems/binary-search

答案:

public class Solution {public static int search(int[] nums, int target) {int left=0;int right=nums.length-1;while(left<=right){int mid=left+(right-left)/2;if(nums[mid]==target){return mid;}else if(nums[mid]<target){left=mid+1;}else{right=mid-1;}}return -1;}public static void main(String[] args){int[] nums = {-1,0,3,5,9,12};int target = 9;int result = search(nums,target);System.out.println(result);}
}

2,不使用任何内建的哈希表库设计一个哈希映射(HashMap)

实现 MyHashMap 类:

MyHashMap() 用空映射初始化对象
void put(int key, int value) 向 HashMap 插入一个键值对 (key, value) 。如果 key 已经存在于映射中,则更新其对应的值 value 。
int get(int key) 返回特定的 key 所映射的 value ;如果映射中不包含 key 的映射,返回 -1 。
void remove(key) 如果映射中存在 key 的映射,则移除 key 和它所对应的 value 。

class MyHashMap {private class Pair {private int key;private int value;public Pair(int key, int value) {this.key = key;this.value = value;}public int getKey() {return key;}public int getValue() {return value;}public void setValue(int value) {this.value = value;}}private static final int BASE = 769;private LinkedList[] data;/** Initialize your data structure here. */public MyHashMap() {data = new LinkedList[BASE];for (int i = 0; i < BASE; ++i) {data[i] = new LinkedList<Pair>();}}/** value will always be non-negative. */public void put(int key, int value) {int h = hash(key);Iterator<Pair> iterator = data[h].iterator();while (iterator.hasNext()) {Pair pair = iterator.next();if (pair.getKey() == key) {pair.setValue(value);return;}}data[h].offerLast(new Pair(key, value));}/** Returns the value to which the specified key is mapped, or -1 if this map contains no mapping for the key */public int get(int key) {int h = hash(key);Iterator<Pair> iterator = data[h].iterator();while (iterator.hasNext()) {Pair pair = iterator.next();if (pair.getKey() == key) {return pair.value;}}return -1;}/** Removes the mapping of the specified value key if this map contains a mapping for the key */public void remove(int key) {int h = hash(key);Iterator<Pair> iterator = data[h].iterator();while (iterator.hasNext()) {Pair pair = iterator.next();if (pair.key == key) {data[h].remove(pair);return;}}}private static int hash(int key) {return key % BASE;}
}

——————————————————————————————————

链接:https://leetcode-cn.com/problems/design-hashmap

力扣刷题-题目以及答案相关推荐

  1. 力扣刷题记录--哈希表相关题目

    当遇到需要快速判断一个元素是否出现在集合里面的时候,可以考虑哈希法,牺牲一定的空间换取查找的时间. java常用的哈希表有HashMap.HashSet以及用数组去模拟哈希,这几种方法各有优劣. 数组 ...

  2. 力扣刷题全局变量WA,局部变量AC的问题

    力扣刷题全局变量WA,局部变量AC问题 题目 原因 题目 golang力扣leetcode 1219.黄金矿工 原因 今天在刷题的时候,遇到一个现象,本地跑测试全部通过,一提交就错错错,非常离谱 然后 ...

  3. 力扣刷题-前k个高频元素

    力扣刷题-前k个高频元素 题目: 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素.你可以按 任意顺序 返回答案. 示例 1: 输入: nums = [1,1,1,2 ...

  4. 力扣刷题——双数之和

    很多人去力扣刷题都是数组的第一题,也就是双数之和,相信这也是很多人劝退题目,甚至对自己学过的知识产生了怀疑,这真的是我学完C语言,Java,Python或C++之后能做出来的题目吗?直接劝退了很多人, ...

  5. 教你创建电脑、手机同步的markdown云笔记--力扣刷题力荐!

    开篇先致歉 其他不谈,开篇必须先给各位读者道个歉,年后工作上比较忙,加上最近闲暇的时间都用来在力扣上刷算法题了,导致公众号断更有些严重啊.再加上年后将健身减重提上了日程,时间上就更显的捉襟见肘了. 不 ...

  6. 《剑指Offer》力扣刷题笔记(03-10)

    <剑指Offer>力扣刷题笔记(03-10) 最近确实有点闲,想在进组搬砖之前找点有意义的事干,于是,就开始刷<剑指Offer>.<程序员面试金典>等书上的题目,也 ...

  7. 力扣刷题之二叉树的层序遍历

                                                      Welcome to you, 每日一刷系列 二叉树的层序遍历 二叉树的层序遍历II 二叉树的右视图 ...

  8. 『力扣刷题』5275_找出井字棋的获胜者 解题代码

    LeetCode-cn 力扣刷题 LeetCode-cn力扣刷题目录 165周赛 5275_找出井字棋的获胜者 * 5275. 找出井字棋的获胜者 显示英文描述* 用户通过次数0* 用户尝试次数0* ...

  9. 『力扣刷题』5276_不浪费原料的汉堡制作方案 解题代码

    LeetCode-cn 力扣刷题 LeetCode-cn力扣刷题目录 165周赛 5276_不浪费原料的汉堡制作方案 * 5276. 不浪费原料的汉堡制作方案 显示英文描述* 用户通过次数212* 用 ...

  10. 『力扣刷题』5238_找出给定方程的正整数解 解题代码

    html: embed_local_images: true embed_svg: true offline: true toc: undefined print_background: false ...

最新文章

  1. python 仪表盘-python数据可视化:pyecharts
  2. Ansible 安装和入门
  3. 树莓派 QT 编程下的硬件中断
  4. SAP CRM和SAP Hybris的action profile
  5. CTabCtrl控件标签的相关设置
  6. concatenate python_python中numpy.concatenate()函数的使用
  7. 随想录(exe和dll的相互调用)
  8. HazeOver For Mac(管理窗口工具)
  9. RegExp()方法参数含义和使用方法
  10. Mac OS下Axure RP 8.0.0.3312安装及注册汉化
  11. Mac安装jdk并配置环境变量
  12. Excel表格中超链接转图片
  13. 使用vue-router+vuex进行导航守卫(转)
  14. 测试绝地求生显卡使用率软件,《绝地求生:大逃杀》全系主流显卡大型评测之显卡需求测试...
  15. javascript飞机大战-----007爆炸效果
  16. c轴 t轴 l轴_数控加工中心3轴、3+2轴、5轴加工的区别是什么?
  17. STP/RSTP协议(二)
  18. 黑马程序员匠心之作|C++教程从0到1入门编程(基础)
  19. Linux学习日志-01
  20. 吴恩达 DeepLearning 第二课第三周题目(包括选择题)

热门文章

  1. 三合一收款码在线生成艺术创意的二维码网站源码 多模板
  2. Team Foundation Server 2013 with Update 3 Install LOG
  3. IDEA查看历史记录
  4. 有什么软件测试固态硬盘,SSD差距有多大?两款主流NVMe固态硬盘测试,一看就包懂...
  5. PCB正片和负片的区别与使用
  6. 【python】自动统计考勤数据
  7. 途家供应链系统架构演进实践
  8. 关于键盘右边的 数字小写键盘不能使用的解决办法
  9. unity商店demo学习:俯视视角RPG游戏
  10. 第五章-对单词进行分类和标记