2.1.3-2.14

2.1.3 Search in Rotated Sorted Array

其中无重复部分

#include <stdio.h>
void main()
{
    int a[7]={4,5,6,7,0,1,2};
    int result = SRSA(a,7,6);
    printf("%d",result);
}
int SRSA(int A[],int length,int target)
{
    int first=0;
    int last=length;
    int mid=0;
    while(first<last)
    {
        mid=(first+last)/2;
        if(A[mid]==target)
            return mid;
        if(A[first]<=A[mid])
        {
            if(A[first]<=target && target<A[mid])
            {
                last=mid;
            }else
            {
                first=mid+1;
            }
        }else
        {
            if(A[mid]<target && target<=A[last-1])
            {
                first=mid+1;
            }else
            {
                last=mid;
            }
        }
    }
    return -1;
}

2.1.4 Search in Rotated Sorted Array II

其中有重复部分

#include <stdio.h>

void main()
{
    int a[5]={1,3,1,1,1};
    int result = SRSA(a,5,1);
    printf("%d",result);
}

int SRSA(int a[],int length,int target)
{
    int first=0;
    int last=length;
    int mid=0;
    while(first!=last)
    {
        mid=(first+last)/2;
        if(a[mid]==target)
        {
            return mid;
        }
        if(a[first]==a[mid])
        {
            first++;
            continue;
        }
        if(a[first]<a[mid])
        {
            if(a[first]<=target&&target<a[mid])
            {
                last=mid;
            }else
            {
                first=mid+1;
            }
        }else
        {
            if(a[mid]<target&&target<=a[last-1])
            {
                first=mid+1;
            }else
            {
                last=mid;
            }
        }
    }
    return -1;
}

  

时间: 2024-09-30 19:16:30

2.1.3-2.14的相关文章

CentOS安装glibc-2.14

到http://ftp.gnu.org/gnu/glibc/下载glibc-2.14.tar.xz tar glibc-2.14.tar.gz cd glibc-2.14 mkdir build cd build ../configure --prefix=/usr/local/glibc-2.14 make -j4 su xxxx make install 看看现在libc.so.6在哪个位置,然后修改软链接 ln -s /usr/local/glibc-2.14/lib/libc-2.14.

14:Challenge 7(map大法好)

总时间限制:  10000ms 单个测试点时间限制:  1000ms 内存限制:  262144kB 描述 给一个长为N的数列,有M次操作,每次操作是以下两种之一: (1)修改数列中的一个数 (2)求数列中某个值出现了多少次 输入 第一行两个正整数N和M.第二行N的整数表示这个数列.接下来M行,每行开头是一个字符,若该字符为'M',则表示一个修改操作,接下来两个整数x和y,表示把x位置的值修改为y:若该字符为'Q',则表示一个询问操作,接下来一次整数x,表示求x这个值出现了多少次. 输出 对每一

14. 流、文件和IO

前言 InputStream/OutStream流用来处理设备之间的数据传输 Java.io 包几乎包含了所有操作输入.输出需要的类.所有这些流类代表了输入源和输出目标. Java.io 包中的流支持很多种格式,比如:基本类型.对象.本地化字符集等等. 一个流可以理解为一个数据的序列.输入流表示从一个源读取数据,输出流表示向一个目标写数据. 流按操作数据分为两种:字节流与字符流 按流向分为:输入流(InputStream)和输出流(OutputStream) Java 为 I/O 提供了强大的而

【Spark深入学习 -14】Spark应用经验与程序调优

----本节内容------- 1.遗留问题解答 2.Spark调优初体验 2.1 利用WebUI分析程序瓶颈 2.2 设置合适的资源 2.3 调整任务的并发度 2.4 修改存储格式 3.Spark调优经验 3.1 Spark原理及调优工具 3.2 运行环境优化 3.2.1 防止不必要的分发 3.2.2 提高数据本地性 3.2.3 存储格式选择 3.2.4 选择高配机器 3.3 优化操作符 3.3.1 过滤操作导致多小任务 3.3.2 降低单条记录开销 3.3.3 处理数据倾斜或者任务倾斜 3.

fail2ban-0.8.14 shell自动部署脚本

#!/bin/bash #fail2ban-0.8.14.tar.gz #python > 2.4V #user:root tar  -zxf fail2ban-0.8.14.tar.gz cd /root/fail2ban-0.8.14/ python setup.py install  cp /root/fail2ban-0.8.14/files/redhat-initd /etc/init.d/fail2ban chkconfig --add fail2ban sleep 1 rm -rf

Linux内核编译 Ubuntu 14.04.3 server 升级至3.19.8

读书笔记:<Linux内核设计与实现>,原书第3版,陈莉君 康华 译 第2章:从内核出发     2.3节:编译内核 实验: ============================================================ 系统环境:VM虚拟机 Ubuntu 14.04.3 LTS server版 任务:编译安装新的内核 注意:不要跨大版本,我在3.19版本内 耗时:2小时 所有版本的内核: https://www.kernel.org/pub/linux/kernel

[JS]笔记14之事件委托

-->什么是事件委托-->事件委托原理-->事件委托优点-->事件源 / 目标源 一.什么是事件委托 通俗的讲,onclick,onmouseover,onmouseout等这些就是事件 委托,就是这个事件本来应该加在某些元素上的,而你却加到其他元素上来完成这个事件. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> &

用python实现计算1-2*((60-30+(-40/5)*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2))类似的公式计算

作业需求: 开发一个简单的python计算器 1.实现加减乘除及拓号优先级解析 2.用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )等类似公式后,必须自己解析里面的(),+,-,*,/符号和公式(不能调用eval等类似功能偷懒实现),运算后得出结果,结果必须与真实的计算器所得出的结果一致 上图是实现的逻辑思路图,下面是对上图的分析: 整体的思想就是先匹配最

4.26日第14次作业,23章项目整体绩效评估,24-32章信息安全相关知识

一.23章:项目整体绩效评估 1.三E审计是什么的合称?(记)P524 答:三E审计是经济审计.效率审计和效果审计的合称,因为三者的第一个英文字母均为E,顾称为三E审计. 2.霍尔三维结构是从哪三个方面考察系统工程的工作过程的?P527-528 答:霍尔三维结构是霍尔(A Hall)提出的关于系统方法论的结构,它从逻辑.时间.知识三方面考察系统工程的工作过程. 3.投资回收期的公式?(记,并理解)P533答:投资回收期的公式:(累计净现金流量出现正值的年份-1) + (上年累计净现金流量值的绝对

Linux -&gt;&gt; UBuntu 14.04 LTE下安装Hadoop 1.2.1(集群分布式模式)

安装步骤: 1) JDK -- Hadoop是用Java写的,不安装Java虚拟机怎么运行Hadoop的程序: 2)创建专门用于运行和执行hadoop任务(比如map和reduce任务)的linux用户,就像windows下的服务账户,并且授权给他可以访问运行JDK目录权限,让他可以执行java虚拟机.这个账户最后用来运行bin\.start_all.sh启动hadoop的所有服务,那运行账户肯定是他了,他肯定要有足够的权限.再者,需要配置这个账户的个人环境变量,把Java虚拟机的主目录地址环境