首页 > TAG信息列表 > midIndex

旋转数组的最小数字【记录】

解法一 package algorithmBasic; /** * @author kegekeqi * @version 1.0 * @date 2021-12-12 18:01 */ public class RotateArray { public int minArray(int[] numbers) { if (null == numbers || numbers.length == 0) { return 0; } int low = 0; int h

二分查找

二分查找(折半查找) 算法效率分析:时间复杂度、空间复杂度 平均时间复杂度:O(n); 空间复杂度:O(1); 前提:数组元素有序 代码实现: 1,main函数内实现: int main() {         int array[MAX] = { 1,2,3,5,6,7,8,9,10,11,12 };         int length = sizeof(array) / sizeof(a

二分查找

public class Test5 { public static void main(String[] args) { int[] nums={0,1,2,3,4,5,6,7,8,9}; //0,1,2,3,4, 中间元素 5,6,7,8,9 //5,6, 7, 8,9 //8, 9 //9 int keys=9;//寻找7 int startIndex=0; int endI

【二叉树】【打卡69天】《剑指Offer》2刷:JZ33 二叉搜索树的后序遍历序列

1.题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回 true ,否则返回 false 。假设输入的数组的任意两个数字都互不相同。 数据范围: 节点数量 0 \le n \le 10000≤n≤1000 ,节点上的值满足 1 \le val \le 10^{5}1≤val≤105 ,保证节点上

力扣 - 剑指 Offer 53 - I. 在排序数组中查找数字 I

题目 剑指 Offer 53 - I. 在排序数组中查找数字 I 思路1 一般来说,首先想到的是使用一个变量,从头开始遍历整个数组,记录target数组出现的次数,但是这样的时间复杂度是O(n),还是不够高效 题目说了,是排序数组,一想到排序数组,我们可以想到使用二分法: 找出第一个target所在的位置和最后一

#Unity _ 快速排序

using System.Collections; using System.Collections.Generic; using UnityEngine; public class 快速排序 : MonoBehaviour { void Start() { 快速排序Test(arr, 0, arr.Length - 1); } public int[] arr = new int[] { 1, 3, 2, 4, 5, 8, 7, 22

完整的二分查找法

包括了递归,非递归,以及重复元素查找,附有注释,简单易懂。。。 package org.example.search; import org.example.sort.BubbleSort; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class BinarySearch { public static void main(String[

剑指 Offer 53 - I. 在排序数组中查找数字 I

class Solution { public int search(int[] nums, int target) { int number =0; if(nums != null && nums.length>0){ int first = getFirstK(nums,nums.length,target,0,nums.length-1); int last = getLastK(nums,

查找算法之二分查找

二分查找的两种实现方式 namespace DataStructureAndAlgorithm.Search { /// <summary> /// 二分查找算法 /// </summary> public class BinarySearch { public static void Test() { int[] arrs = { 1,3,7,23,44,55 };

LeetCode - Construct Binary Tree from Preorder and Inorder Traversal

Given preorder and inorder traversal of a tree, construct the binary tree. Note: You may assume that duplicates do not exist in the tree. For example, given preorder = [3,9,20,15,7] inorder = [9,3,15,20,7] Return the following binary tree: 3 /

LeetCode31. 下一个排列

31. 下一个排列 实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。 必须原地修改,只允许使用额外常数空间。 以下是一些例子,输入位于左侧列,其相应输出位于右侧列。 1,2,3

最小可用ID

最小可用ID 题:在非负数组中找到最小的可分配的id(从1开始编号),数据量1000000 思路1:开辟存储空间 private static int helper[]; public static int findID(int[] arr) { int len = arr.length; int[] helper = new int[len+1]; for(int i=0; i<len; i++) { if(a

LintCode 223: Palindrome Linked List

Palindrome Linked List Implement a function to check if a linked list is a palindrome. Example Example 1: Input: 1->2->1 output: true Example 2: Input: 2->2->1 output: false Challenge Could you do it in O(n) time and O(1) space? 解法1: 我用的stack

旋转数组的最小数字(Java)

public class E11RotateInOrderNumbers { //寻找某数组旋转数组中最小数字 //特殊情况:移动0个元素;数组中存在重复的数字 public static int getMin(int[] numbers, int length){ if (numbers == null || length <= 0) throw new Illegal

算法图解读书笔记

二分法查找 对于区间[a,b]上连续不断且f(a)·f(b)<0的函数y=f(x),通过不断地把函数f(x)的零点所在的区间一分为二,使区间的两个端点逐步逼近零点。 适用于提高大列表查询速度,对于包含n个元素的列表,时间复杂度为:O(log2n)。 列表必须有序,并且当列表中存在多个相同元素时并非返回列表中第一次出

二分查找

class Solution { /** * 递归的二分查找 * @param nums * @param target * @param left * @param right * @return */ public int binarySearch(int[] nums, int target, int left, int right) { if(left > right) {