ICode9

精准搜索请尝试: 精确搜索
  • 五大算法之二分搜索2022-07-28 00:33:21

    概述   二分搜索是常见的搜索算法,能够将有序数组搜索的线性复杂度降低到对数级别。搜索过程每次取搜索区间内的中间元素,如果等于目标元素则直接返回结果;如果大于或小于目标元素,则将搜索区间缩短到对应的一半元素范围,继续搜索,直至搜索区间为空。当然二分搜索不限于找目标值,寻找左

  • LeetCode352022-07-27 15:04:11

    class Solution { public int searchInsert(int[] nums, int target) { for(int i=0;i<nums.length;i++){ if(nums[i]>=target){ return i; } } return nums.length; } } 不过题目要求的时间复杂度暗示

  • 算法数据结构系列-实践篇-数组算法2022-07-27 10:01:50

    @目录Offer-03 数组中重复的数字Offer-66 构建乘积数组Offer-45 把数组排成最小的数Offer-49 判断丑数Offer-29 顺时针打印矩阵offer-61 扑克牌中的顺子Offer-57 和为s的两个数字Offer-57-II 和为s的连续正数序列Offer-59-1 滑动窗口的最大值Offer-44 数字序列中某一位的数字Offer

  • Leetcode的中等算法题:198. 打家劫舍2022-07-27 04:32:04

    链接:https://leetcode.cn/problems/house-robber/ 方法1 学会了动态规划思路后,我独立想出来的一个方法,缺点是代码不够优雅(dp和nums的序号有错位)。 我的代码 int max(int a,int b){ return a>b?a:b; } int rob(int* nums, int numsSize){ // dp预留出来2个位置.dp[i+2]表示

  • Leetcode的简单算法题:53. 最大子数组和2022-07-27 03:32:03

    链接:https://leetcode.cn/problems/maximum-subarray/ 之前题解的博客:https://tsuish.gitee.io/p/7a78 注:之后把这篇博客整理到hexo 我的代码 int max(int a,int b){ return a>b?a:b; } int maxSubArray(int* nums, int numsSize){ int dp[100001],res = nums[0]; dp[

  • day302022-07-26 23:02:29

    1.剑指 Offer 17. 打印从 1 到最大的 n 位数  1)直接列举(执行用时比分治短) 1 class Solution { 2 public: 3 vector<int> printNumbers(int n) { 4 vector<int> res; 5 int num = 0; 6 for(int i = 0;i < n;i ++) 7 num = num * 10 + 9;

  • 二分法2022-07-26 19:07:24

    二分查找也常被称为二分法或者折半查找,每次查找时通过将待查找区间分成两部分并只取一部分继续查找,将查找的复杂度大大减少。对于一个长度为 O(n) 的数组,二分查找的时间复杂度为 O(log n)。 1、给你一个非负整数 x ,计算并返回 x 的 算术平方根 。 由于返回类型是整数,结果只保留

  • 杨辉三角2022-07-26 18:31:32

    //编写一个main方法 public static void main(String[] args) { Scanner myScanner = new Scanner(System.in); System.out.print("输入杨辉三角的层数:"); int nums = myScanner.nextInt(); //创建数组 int[][] arr = new int[nums]

  • 两数之和2022-07-26 16:03:15

    只需要一次循环,循环时将key定义为nums[i],value定义为i 每次判断一次key === target - nums[i],如果成立直接返回两个下标,不成立就把值填入hashmap 代码 func twoSum(nums []int, target int) []int { numsMap := make(map[int]int, len(nums)) var res = []int{0, 0} for i,

  • 剑指 Offer II 057. 值和下标之差都在给定的范围内-----滑动窗口2022-07-26 15:37:32

    题目表述 给你一个整数数组 nums 和两个整数 k 和 t 。请你判断是否存在 两个不同下标 i 和 j,使得 abs(nums[i] - nums[j]) <= t ,同时又满足 abs(i - j) <= k 。 如果存在则返回 true,不存在返回 false。 示例: 输入:nums = [1,2,3,1], k = 3, t = 0 输出:true 滑动窗口 遍历数组(i

  • LeetCode 349. 两个数组的交集2022-07-26 15:02:45

    给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。     import java.util.*; import java.util.stream.Collectors; public class LC349 { //运用流的一种解法 public int[] intersecti

  • leetcode.41. 缺失的第一个正数2022-07-25 22:31:07

    给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。  示例 1: 输入:nums = [1,2,0]输出:3示例 2: 输入:nums = [3,4,-1,1]输出:2示例 3: 输入:nums = [7,8,9,11,12]输出:1  提示: 1 <= nums.length

  • 35题:搜索插入位置2022-07-25 22:00:31

    例题: 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 输入: nums = [1,3,5,6], target = 5 输出: 2 输入: nums = [1,3,5,6], target = 2 输出: 1 输入:

  • c++二分法查找2022-07-25 14:31:36

    二分法: 二分法应用条件:1)数组为有序数组。2)同时题目还强调数组中无重复元素,因为一旦有重复元素,使用二分查找法返回的元素下标可能不是唯一的。 区间的定义: 区间的定义不同代码就不同。 1)定义target在[left, right]区间 while (left <= right) 要使用 <= ,因为left == right是有意义

  • 剑指 Offer 56 - II. 数组中数字出现的次数 II2022-07-24 19:00:34

    剑指 Offer 56 - II. 数组中数字出现的次数 II 在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。   示例 1: 输入:nums = [3,4,3,3] 输出:4 示例 2: 输入:nums = [9,1,7,9,7,9,7] 输出:1   限制: 1 <= nums.length <= 10000 1 <= n

  • leetcode.35. 搜索插入位置2022-07-24 00:33:00

    给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。   示例 1: 输入: nums = [1,3,5,6], target = 5输出: 2示例 2: 输入: nums = [1,3,5,6], target = 2输出: 1

  • leetcode.34. 在排序数组中查找元素的第一个和最后一个位置2022-07-24 00:02:58

    给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回 [-1, -1]。 你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。   示例 1: 输入:nums = [5,7,7,8,8,10], target

  • leetcode.33. 搜索旋转排序数组2022-07-23 22:31:29

    整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处

  • LeetCode - 最接近的三数之和2022-07-23 18:00:55

    最接近的三数之和 你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。 返回这三个数的和。 假定每组输入只存在恰好一个解。 示例 1: 输入:nums = [-1,2,1,-4], target = 1 输出:2 解释:与 target 最接近的和是 2 (-

  • 15. 三数之和2022-07-23 17:03:52

    15. 三数之和 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。 示例 1: 输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例 2: 输入:nums = []输出:[]

  • 数组里的零全部移动到后面,其余数字顺序保持不变2022-07-23 16:05:30

    双指针的两种方法 方法一:时间复杂度logN,空间复杂度1 nums = [1,2,0,5,7,0] low = 0 # 指向非零部分的最后一个位置 fast = 0 # 遍历列表元素 n = len(nums) while fast < n: # 走一遍,原始空间上已经存有非零数字 if nums[fast]!=0: # 遇到非零元素将其存到nums对应low位置

  • 算法--1.02022-07-23 14:34:19

    学习数组与字符串(线性表) 1.理解数组基本概念与操作方式 2.理解二维数组基本概念 3.了解字符串的概念以及字符串不同特性 4.KMP算法 5.双指针 题目1:寻找数组的中心索引 给你一个整数数组 nums ,请计算数组的 中心下标 。 数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于

  • Leetcode 209. 长度最小的子数组(待解决)2022-07-23 12:01:40

    给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。 示例 1: 输入:target = 7, nums = [2,3,1,2,4,3] 输出:2 解释:子数组 [4,

  • day272022-07-23 12:01:18

    1.剑指 Offer 59 - I. 滑动窗口的最大值  单调队列 1 class Solution { 2 public: 3 vector<int> maxSlidingWindow(vector<int>& nums, int k) { 4 vector<int> res; 5 deque<int> q; 6 int n = nums.size(); 7 for(int i

  • LeetCode/排序贪心综合2022-07-23 06:31:07

    1. 根据身高重建队列 假设有打乱顺序的一群人站成一个队列,数组 people 表示队列中一些人的属性(不一定按顺序) 每个 people[i] = [hi, ki] 表示第 i 个人的身高为 hi ,前面 正好有 ki 个身高大于或等于 hi 的人 class Solution { public: vector<vector<int>> reconstructQueue(v

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有