1 /*30 [程序 30 插入数字] 2 题目:有一个已经排好序的数组.现输入一个数,要求按原来的规律将它插入数组中. 3 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的 4 数,依次后移一个位置. 5 */ 6 7 /*分析 8 * 1.有一个从小到大排列好的数组,如:1,3,5,7,9,11,13,15,17,19,21;(共11个数,插入就12个了) 9 * 2.插入一个数(如10或者22); 10 * 3.(1)22的话,因为大于最后一个数,…
现在有一大堆自然数组成的小到大数组arr,其中会有123456910  这样就要找到6(最先不连续的数字) 举例:[12356789] 找到3 [012345678] 找到8 第一种:遍历数组判断是否差1,返回值即可   算法时间复杂度O(n) 第二种: /* * 传输方向:指挥机用户机 *指令长度:共3 bytes *说明:本指令为累积式应答,指令中的序号表示指挥机已经接收到了一直到该序号的所有定位记录,例如: *假设指挥机已接收到定位记录序号为0,1,2,3,5,6,8,则收到应答指令中的…
public static void main(String[] args) { int[] a = {1,2,2,3,3,4,5,6}; int m = 6; normal(a, m); } //正确思路 private static void normal(int[] a, int m) { Map<Integer,Integer> b = new HashMap<Integer, Integer>(); for(int i = 0;i < a.length;i++) {…
设子数组A[0:k]和A[k+1:N-1]已排好序(0≤K≤N-1).试设计一个合并这2个子数组为排好序的数组A[0:N-1]的算法.要求算法在最坏情况下所用的计算时间为O(N),只用到O(1)的辅助空间. //翻转字符串时间复杂度O(to - from) void reverse(int *a, int from, int to) { int t; for (; from < to; ++from, --to) { t = a[from]; a[from] = a[to]; a[to] = t…
正文 本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 统计一个数字在排序数组中出现的次数.例如输入排序数组{1, 2, 3, 3,3, 3, 4, 5}和数字3,由于3在这个数组中出现了4次,因此输出4. 思路 分析:对于例子来说,如果采用二分法找到某一个3后,再往前遍历和往后遍历到第一个和最后一个3,在长度为n的数组中有可能出现O(n)个3,因此这样的扫描方法时间复杂度为O(n),效率与从头到尾扫描一样,速度太慢. 这…
package com.example.demo; public class BTree { public int data; public BTree left; public BTree rigth; public boolean hasLeft(){ return left != null; } public boolean hasRigth(){ return rigth != null; } public BTree(){} } class main{ public static vo…
class Demo1 { public static void main(String[] args) { /* 5. 有如下歌曲数组 String[] musics = new String[]{"Island","Ocean","Pretty","Sun"}; //这是按照字母顺序排好序的 字符串数组 现在要往里面插入新的英文歌曲, 按照首字母排序插入到指定的位置 提示: musics[i].compareToIgnor…
<!DOCTYPE html> <title>Title</title> <script> var arr = [1,2,3,4,11]; var s = prompt("请输入一个数字"); var middle_index = 0; var result =[]; if (i%2 == 0) { middle_index = arr.length/2-1; } else { middle_index = (arr.length+1)/…
public class Test3 { public static void main(String[] args) { int[] grade = {87,88,89,98,78}; int m; for(int i = 0; i < 2; i++){ m = grade[i]; grade[i] = grade[5-i-1]; grade[5-i-1] = m; } for(int j =0; j < 5; j++){ System.out.println(grade[j]); } }…
#include <bits/stdc++.h> using namespace std; const int N = 1e6,INF = 0x3f3f3f3f; int a[N]; int n,x; void fun(int n) { int left = 0, right = n-1; while(left < right) { int ans=a[left] + a[right]; if(ans == x) { cout<<a[left]<<' '<&…