力扣刷题-题目以及答案
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
力扣刷题-题目以及答案相关推荐
- 力扣刷题记录--哈希表相关题目
当遇到需要快速判断一个元素是否出现在集合里面的时候,可以考虑哈希法,牺牲一定的空间换取查找的时间. java常用的哈希表有HashMap.HashSet以及用数组去模拟哈希,这几种方法各有优劣. 数组 ...
- 力扣刷题全局变量WA,局部变量AC的问题
力扣刷题全局变量WA,局部变量AC问题 题目 原因 题目 golang力扣leetcode 1219.黄金矿工 原因 今天在刷题的时候,遇到一个现象,本地跑测试全部通过,一提交就错错错,非常离谱 然后 ...
- 力扣刷题-前k个高频元素
力扣刷题-前k个高频元素 题目: 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素.你可以按 任意顺序 返回答案. 示例 1: 输入: nums = [1,1,1,2 ...
- 力扣刷题——双数之和
很多人去力扣刷题都是数组的第一题,也就是双数之和,相信这也是很多人劝退题目,甚至对自己学过的知识产生了怀疑,这真的是我学完C语言,Java,Python或C++之后能做出来的题目吗?直接劝退了很多人, ...
- 教你创建电脑、手机同步的markdown云笔记--力扣刷题力荐!
开篇先致歉 其他不谈,开篇必须先给各位读者道个歉,年后工作上比较忙,加上最近闲暇的时间都用来在力扣上刷算法题了,导致公众号断更有些严重啊.再加上年后将健身减重提上了日程,时间上就更显的捉襟见肘了. 不 ...
- 《剑指Offer》力扣刷题笔记(03-10)
<剑指Offer>力扣刷题笔记(03-10) 最近确实有点闲,想在进组搬砖之前找点有意义的事干,于是,就开始刷<剑指Offer>.<程序员面试金典>等书上的题目,也 ...
- 力扣刷题之二叉树的层序遍历
Welcome to you, 每日一刷系列 二叉树的层序遍历 二叉树的层序遍历II 二叉树的右视图 ...
- 『力扣刷题』5275_找出井字棋的获胜者 解题代码
LeetCode-cn 力扣刷题 LeetCode-cn力扣刷题目录 165周赛 5275_找出井字棋的获胜者 * 5275. 找出井字棋的获胜者 显示英文描述* 用户通过次数0* 用户尝试次数0* ...
- 『力扣刷题』5276_不浪费原料的汉堡制作方案 解题代码
LeetCode-cn 力扣刷题 LeetCode-cn力扣刷题目录 165周赛 5276_不浪费原料的汉堡制作方案 * 5276. 不浪费原料的汉堡制作方案 显示英文描述* 用户通过次数212* 用 ...
- 『力扣刷题』5238_找出给定方程的正整数解 解题代码
html: embed_local_images: true embed_svg: true offline: true toc: undefined print_background: false ...
最新文章
- python 仪表盘-python数据可视化:pyecharts
- Ansible 安装和入门
- 树莓派 QT 编程下的硬件中断
- SAP CRM和SAP Hybris的action profile
- CTabCtrl控件标签的相关设置
- concatenate python_python中numpy.concatenate()函数的使用
- 随想录(exe和dll的相互调用)
- HazeOver For Mac(管理窗口工具)
- RegExp()方法参数含义和使用方法
- Mac OS下Axure RP 8.0.0.3312安装及注册汉化
- Mac安装jdk并配置环境变量
- Excel表格中超链接转图片
- 使用vue-router+vuex进行导航守卫(转)
- 测试绝地求生显卡使用率软件,《绝地求生:大逃杀》全系主流显卡大型评测之显卡需求测试...
- javascript飞机大战-----007爆炸效果
- c轴 t轴 l轴_数控加工中心3轴、3+2轴、5轴加工的区别是什么?
- STP/RSTP协议(二)
- 黑马程序员匠心之作|C++教程从0到1入门编程(基础)
- Linux学习日志-01
- 吴恩达 DeepLearning 第二课第三周题目(包括选择题)