[003] largest_subarray_with_equal_1&0

[Description] Given an array with only ‘1‘ and ‘0‘, find a largest length sub-array which contains equal number of ‘1‘ and ‘0‘. Return the largest number.

e.g. arr[] = {1,0,1,0,0,0,1,1,0,1,1,0,1,1,1,0,0,1,1,1,0,1,0,1,1}

  return : 16

[Thought] Preprocess this array by add 1/-1 to arr[i] while arr[i] is 1/0; find the last position of ‘0‘ as ‘largest1‘; find the farther distance of the same number as ‘largest2‘; return the larger one of ‘largest1‘ and ‘largest2‘.  O(n^2)

[Implementation] C code:

 1 #include<stdio.h>
 2
 3 int largestSubarray(int str[],int size)
 4 {
 5         int largest=0;
 6         int i,j;
 7         str[0]?(str[0]=1):(str[0]=-1);
 8         // preprocess.
 9         for(i=1;i<size;i++)
10         {
11                 str[i]?(str[i]=str[i-1]+1):(str[i]=str[i-1]-1);
12         }
13         // find the last 0‘s position, and find the farther distance of the same numbers.
14         for(i=0;i<size;i++)
15         {
16                 // find the last 0‘s position.
17                 if(0 == str[i] && (i+1)>largest)
18                 {
19                         largest=i+1;
20 //                      printf("0:%d\n",largest);
21                 }
22                 // find the farther distance of the same numbers.
23                 for(j=0;j<i;j++)
24                 {
25                         if(str[i] == str[j] && (i-j)>largest)
26                         {
27                                 largest=i-j;
28 //                              printf("other:%d\n",largest);
29                                 break;
30                         }
31                 }
32         }
33         return largest;
34 }
35
36 int main()
37 {
38         int str[]={1,0,1,0,0,0,1,1,0,1,1,0,1,1,1,0,0,1,1,1,0,1,0,1,1};
39         int size=sizeof(str)/sizeof(str[0]);
40         int i;
41
42         printf("Initianl Sequence which size is %d :\n",size);
43         for(i=0;i<size;i++)
44         {
45                 printf("%d, ",str[i]);
46         }
47         printf("\nlargest:%d\n",largestSubarray(str,size));
48 }
时间: 2024-08-01 22:48:23

[003] largest_subarray_with_equal_1&0的相关文章

jdbc工具类2..0

一.创建外部文件 url=jdbc:mysql:///qy66 use=root password=root driver=com.mysql.jdbc.Driver 二.创建工具类 package cn.zhouzhou; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.net.URL; import java.sql.Connect

【学习排序】 Learning to Rank 中Listwise关于ListNet算法讲解及实现

前一篇文章"Learning to Rank中Pointwise关于PRank算法源码实现"讲述了基于点的学习排序PRank算法的实现.该篇文章主要讲述Listwise Approach和基于神经网络的ListNet算法及Java实现.包括: 1.基于列的学习排序(Listwise)介绍 2.ListNet算法介绍 3.ListNet算法Java实现 LTR中单文档方法是将训练集里每一个文档当做一个训练实例,文档对方法是将同一个查询的搜索结果里任意两个文档对作为一个训练实例,文档列方法

转载---编写高质量代码:改善Java程序的151个建议(第2章:基本类型___建议21~25)

阅读目录 建议21:用偶判断,不用奇判断 建议22:用整数类型处理货币 建议23:不要让类型默默转换 建议24:边界还是边界 建议25:不要让四舍五入亏了一方 不积跬步,无以至千里: 不积小流,无以成江海. ---荀子<劝学篇> 回到顶部 建议21:用偶判断,不用奇判断 判断一个数是奇数还是偶数是小学里的基本知识,能够被2整除的整数是偶数,不能被2整除的数是奇数,这规则简单明了,还有什么可考虑的?好,我们来看一个例子,代码如下: 1 import java.util.Scanner; 2 3

java提高篇-----详解java的四舍五入与保留位

四舍五入是我们小学的数学问题,这个问题对于我们程序猿来说就类似于1到10的加减乘除那么简单了.在讲解之间我们先看如下一个经典的案例: public static void main(String[] args) { System.out.println("12.5的四舍五入值:" + Math.round(12.5)); System.out.println("-12.5的四舍五入值:" + Math.round(-12.5)); } Output: 12.5的四舍

squid日志配置与轮询

squid日志分类及参数 SQUID默认的log文件非常多,其中最重要的LOG日志有三个,分别为access.log.store.log.cache.log.三个日志的记录的内容如下: access.log;客户端使用代理服务器的记录文件 store.log;存储缓冲对象的状态记录文件 cache.log;CACHE的启动以及各类状态的记录文件 三个日志的路径可由cache_access_log,cache_store_log,cache_log三个参数在squid.conf里定义.三个参数的用

Linux显示PCI设备

[email protected]:~$ lspci -tv -[0000:00]-+-00.0 Advanced Micro Devices, Inc. [AMD] Family 15h (Models 10h-1fh) Processor Root Complex +-01.0 Advanced Micro Devices, Inc. [AMD/ATI] Richland [Radeon HD 8650G] +-01.1 Advanced Micro Devices, Inc. [AMD/A

(转载)Oracle AWR报告指标全解析

Oracle AWR报告指标全解析 2014-10-16 14:48:04 分类: Oracle [性能调优]Oracle AWR报告指标全解析 2013/08/31 BY MACLEAN LIU 26条评论 [性能调优]Oracle AWR报告指标全解析 开Oracle调优鹰眼,深入理解AWR性能报告:http://www.askmaclean.com/archives/awr-hawk-eyes-training.html 开Oracle调优鹰眼,深入理解AWR性能报告 第二讲: http:

Andrew Ng Machine Learning 专题【Linear Regression】

此文是斯坦福大学,机器学习界 superstar - Andrew Ng 所开设的 Coursera 课程:Machine Learning 的课程笔记. 力求简洁,仅代表本人观点,不足之处希望大家探讨. 课程网址:https://www.coursera.org/learn/machine-learning/home/welcome Week 3: Logistic Regression & Regularization 笔记:http://blog.csdn.net/ironyoung/ar

UI篇之——用户体验

内容均为原创,转载请注明处处谢谢. 用户体验(User Experience,简称UX)是一个关于用户(users)以及交互(interactive)技术系统领域的整体概念.具体来说,它代表了一个网站或者应用程序对其用户的可用性(usability)以及吸引程度.可用性高意味着交互产品能够让用户快速的实现他的目标.ISO 9241-110[1]以及Nielsen的研究[2]是这个领域中的“圣经”. 吸引力是指用户以及他所交互系统之间的情感.用户喜欢它吗?讨厌它吗?他们认为它是吸引人的.时尚的,还