文档章节

基础算法----找出集合中最大和值的子数组,插入排序,找出数组中出现最多的元素

春哥大魔王的博客
 春哥大魔王的博客
发布于 2017/02/27 14:05
字数 356
阅读 28
收藏 0

玩法

给定数组,包含正负整数,找出对应和值最大的子数组;

解法

一个数只有加上大于0的正整数才会越来越大,否则遇到小于0的负整数重新计数;

实现

int[] arr = { 3, -6, 1, 2, 3, -1, 2, -5, 1, 2 };

#region 找出最大加值子数组
static string maxSubArr(int[] arr)
{
    int sum = 0;
    int start = 0;
    int end = 0;
    int temp = 0;
    for (int i = 0; i < arr.Length; i++)
    {
        if (temp < 0)
        {
            start = i;
            temp = arr[i];
        }
        else
        {
           temp += arr[i];
        }
        if (sum < temp)
        {

            sum = temp;
            end = i;
        }
     }
    return start + "," + end;
}
#endregion

// start和end是子串头尾的两个坐标

输出

1,2,3,-1

找出数组的正左负右

给定数组包含正负整数,如何将正整数放左,负整数放右。可采用插入排序;

实现

static int[] arr3 = { 1, -2, -4, 5, 6, -3, -8, 6 };

static void leftOrRight2(int[] arr)
 {
    int start = 0;
    int end = arr.Length - 1;
    while (start != end)
    {
        while (start < end && arr[start] < 0)
        {
            start++;
        }
        while (start < end && arr[end] >= 0)
        {
            end--;
        }
        if (start < end)
        {
            int temp = arr[start];
            arr[start] = arr[end];
            arr[end] = temp;
        }
    }
}

找出数组中出现最多的元素

static int[] arr4 = { 0, 2, 2, 1, 2, 0, 2, 0 };

#region 找到数组中出现最多的元素
static void findMaxDisplay(int[] arr)
{
    int v = arr[0];
    int c = 0;
    for (int i = 0; i < arr.Length; i++)
    {
        if (v == arr[i])
        {
           c++;
        }
        else
        {
            c--;
        }
        if (c == 0)
        {
            v = arr[i];
            c = 1;
         }
    }

    System.Console.WriteLine(v);
}
#endregion

源码

http://git.oschina.net/aspnet/Suan-Fa

© 著作权归作者所有

共有 人打赏支持
春哥大魔王的博客
粉丝 19
博文 138
码字总数 82210
作品 0
海淀
程序员
前端面试中的常见的算法问题

0. 前言 重要:如果文章内部有图片无法显示,请移步简书 查看。 今天在刷文章的时候,突然看到了一篇专门分享前端面试算法的文章。 趁着现在有时间,赶紧和大家分享一波。 下面直接开始正文。...

mr_lp
2016/12/23
0
0
大数据处理面试题

给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url? 方an1:可以估计每个文件安的大小为50G×64=320G,远远大于内存限制的4G。所以不可能将...

zyt_1978
2016/04/14
130
0
海量数据面试题整理1.给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是

海量数据面试题整理   1. 给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?   方案1:可以估计每个文件安的大小为50G×64=320G,远远...

今幕明
2015/01/30
0
0
海量数据处理:十道面试题与十个海量数据处理方法总结

1、海量日志数据,提取出某日访问百度次数最多的那个IP。 首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。同样可以采用映射...

ahucsxl
2015/10/08
165
0
十道海量数据处理面试题与十个方法大总结

海量数据处理:十道面试题与十个海量数据处理方法总结 本文之总结:教你如何迅速秒杀掉:99%的海量数据处理面试题。 出处:http://blog.csdn.net/vJULYv。 第一部分、十道海量数据处理面试题...

吟啸_徐行
2014/04/02
0
2

没有更多内容

加载失败,请刷新页面

加载更多

Spring Boot 使用parent方式引用时 获取值属性方式默认@

采用官网提供的 引入依赖时,application.properties中的值变量,无法通过${}获取,这是由于Spring Boot 已经将字符方式调整为 <resource.delimiter>@</resource.delimiter>。故如果在,工程中...

翱翔fly
25分钟前
1
0
HTTPS证书验证流程及SSL证书生成步骤【附nginx开启https配置】

------------------------------------------------------------ HTTPS证书验证流程(极简化版) 1.客户端向服务端请求证书(server.crt) 2.服务端下发证书(server.crt) 3.客户端用预制的...

xiaomin0322
26分钟前
1
0
预编译sql语句和参数化sql能有效防止——sql注入攻击——

预编译和参数化处理sql原理类似: 参数化处理sql 是将参数进行了字符串化处理,把参数中的单引号,井号#,等都做了转义处理,进而在执行sql语句时不会被当做sql中的定界符和指定符来执行。 ...

fang_faye
27分钟前
1
0
springboot最全配置解释

​​​​​​​# ----------------------------------------# 核心属性# ----------------------------------------# 文件编码banner.charset= UTF-8# 文件位置banner.locati...

废柴大叔
28分钟前
85
1
(大致了解下)从单机到2000万QPS: 知乎Redis平台发展与演进之路

导读:知乎存储平台团队基于开源Redis 组件打造的知乎 Redis 平台,经过不断的研发迭代,目前已经形成了一整套完整自动化运维服务体系,提供很多强大的功能。本文作者是是该系统的负责人,文...

Ocean_K
35分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部