精华内容
下载资源
问答
  • 数组长度:arr.length; 字符串长度:s.length(); 集合大小:c.size(); 数组是一个容器,当它被创建后,不仅元素的类型是确定的,元素的个数也是确定的。换句话说,数组的长度是确定的,不可能再增加或者减少。因此...

    数组长度:arr.length; 
    字符串长度:s.length(); 
    集合大小:c.size();

    数组是一个容器,当它被创建后,不仅元素的类型是确定的,元素的个数也是确定的。换句话说,数组的长度是确定的,不可能再增加或者减少。因此,数组可以使用一个字段(length)来表示长度。

    数组没有单独定义成一个类,而字符串 String 是一个类,length() 方法返回的正是字符数组 value 的长度(length),value 本身是 private 的,因此需要为 String 类提供一个 public 级别的方法(length())来供外部访问字符的长度。

     

    Collections 类使用方法 collection.size()来计算集合的长度, 方法collection.add() 来添加数据,方法collection.get(i)来读取数据。

     

    展开全文
  • 字符数组在创建的时候,长度就已经确定了,所以可以利用length属性表示其长度,而字符串本质也是一个字符数组,没必要再这个属性表示其长度,于是就封装了一个方法,其源码如下: public int length() { ...
  • 已知一个整型数组arr,数组长度sizesize大于2,arr有size-1种 可以划分成左右两部分的方案。 比如: arr = {3, 2, 3, 4, 1, 2} 第1种划分左部分为[3],右部分为[2, 3, 4, 1, 2] 第2种划分左部分为[3, 2],右...

    已知一个整型数组arr,数组长度为size且size大于2,arr有size-1种 可以划分成左右两部分的方案。

    比如: arr = {3, 2, 3, 4, 1, 2}

    第1种划分左部分为[3],右部分为[2, 3, 4, 1, 2]

    第2种划分左部分为[3, 2],右部分为[3, 4, 1, 2]

    第3种划分左部分为[3, 2, 3],右部分为[4, 1, 2]

    第4种划分左部分为[3, 2, 3, 4],右部分为[1, 2]

    第5种划分左部分为[3, 2, 3, 4, 1],右部分为[2]
    每一种划分下,左部分都有最大值记为max_left,右部分都有最大值记 为max_right。 求|max_left-max_right|(左部分最大值与左部分最大值之差的绝对值), 最大是多少? 要求:时间复杂度为O(N),额外空间复杂度O(1)

     

    1.最笨的方法就是从下标0开始依次分左右部分,然后分别遍历找最大值,需要遍历n次,一次遍历n个位置,所以时间复杂度为O(n*n)

    2.这道题涉及到一个思想,辅助数组,当我们想拿左部分的最大值时我们可以直接从数组里拿,而不用遍历,当想拿右部分最大值的时候同理

    如何做?

    准备两个数组,Max_left和Max_right,数组大小与题中数组大小一样,以题中arr数组为例

    从arr[0]开始遍历,将arr[0]的值放入Max_left[0]中,然后arr[1],如何arr[1]大于arr[0],则Max_left[1]里放的时arr[1],如果arr[0]>arr[1]则Max_left里放的时arr[0],即Max_left[i]里放的时[ arr[0],arr[i] ]中最大的值,同理Max_right是下标从n-1开始往左遍历,Max_right[n-1]里放到是[ i , n-1 ] 里的最大值,所以两个数组取最大值相减得绝对值的时候,Max_right的下标比Max_left的下标大一,比如| Max_left[0]-Max_right[1],遍历找去绝对值最大

    3.最简单的一种方法,找出数组中最大的值max,然后max减去左右边界(下标0和下标n-1)比较小的那个数就是答案 

    为什么?

    数组最大值肯定位于左右部分中的其中一个,max要减一个另外一部分最大值。假设max位于左部分,则右部分的最大值要比较小,设下标n-1位置的数为L,L处于的右部分的最大值肯定是大于等于L的,所以当右部分只有L时,则右部分的最大值最小;同理,假设max位于右部分,则左部分的最大值要比较小,设下标0位置的数为R,R处于的左部分的最大值肯定是大于等于R的,所以当左部分只有R时,则左部分的最大值最小。还有一种情况就是max位于边界,但这种情况和上面的两种情况分析一样。

    代码:

     

    public class MaxABSBetweenLeftAndRight {

        public static int maxABS1(int[] arr) {
            int res = Integer.MIN_VALUE;
            int maxLeft = 0;
            int maxRight = 0;
            for (int i = 0; i != arr.length - 1; i++) {
                maxLeft = Integer.MIN_VALUE;
                for (int j = 0; j != i + 1; j++) {
                    maxLeft = Math.max(arr[j], maxLeft);
                }
                maxRight = Integer.MIN_VALUE;
                for (int j = i + 1; j != arr.length; j++) {
                    maxRight = Math.max(arr[j], maxRight);
                }
                res = Math.max(Math.abs(maxLeft - maxRight), res);
            }
            return res;
        }

        public static int maxABS2(int[] arr) {
            int [] Max_left = new int[arr.length];
            int [] Max_right = new int[arr.length];
            Max_left[0] = arr[0];
            Max_right[arr.length - 1] = arr[arr.length - 1];
            for (int i = 1; i < arr.length; i++) {
                Max_left[i] = Math.max(Max_left[i - 1],arr[i]);
            }
            for (int i = arr.length - 2; i > -1; i--) {
                Max_right[i] = Math.max(Max_right[i + 1], arr[i]);
            }
            int max = 0;
            for (int i = 0; i < arr.length - 1; i++) {
                max = Math.max(max, Math.abs(Max_left[i] - Max_right[i + 1]));
            }
            return max;
        }

        public static int maxABS3(int[] arr) {
            int max = Integer.MIN_VALUE;
            for (int i = 0; i < arr.length; i++) {
                max = Math.max(arr[i], max);
            }
            return max - Math.min(arr[0], arr[arr.length - 1]);
        }

        public static int[] generateRandomArray(int length) {
            int[] arr = new int[length];
            for (int i = 0; i != arr.length; i++) {
                arr[i] = (int) (Math.random() * 1000) - 499;
            }
            return arr;
        }

        public static void main(String[] args) {
            int[] arr = generateRandomArray(200);
            System.out.println(maxABS1(arr));
            System.out.println(maxABS2(arr));
            System.out.println(maxABS3(arr));
        }
    }
     

     

    展开全文
  • 我自己写了个BaseAdapter,在getCount中返回普通数组.length方法没问题,可是返回ArrayList的.size()方法就出错了 ,求大神解答啊啊啊啊
  • C/C++ | 求数组长度 | 求字符串数组长度 | 求string类型长度; 数组长度 int arr[] = {1,2,3,4,5,6,7,8,9}; int length = 0; length = sizeof(arr) / sizeof(int); int arr[10]={0,0}; //这样的无法...

    数组长度

    	int arr[] = {1,2,3,4,5,6,7,8,9};
    	int length = 0;
    	length = sizeof(arr) / sizeof(int); 
    
    	int arr[10]={00};
    	//这样的无法通过上述方法获得
    

    字符型数组长度

    	char c[10] = "asd";
    	cout<<strlen(c)<<endl;
    	cout<<sizeof(c)<<endl;
    	cout<<sizeof(c)/sizeof(c[0])<<endl;
    

    输出

    3
    10
    10
    

    所以字符串数组只能用strlen函数

    字符串string类型长度

    	string c = "asd";
    	cout<<c.size()<<endl;
    	cout<<c.length()<<endl;
    

    输出

    3
    3
    

    字符串数组长度

    char* array_str[] = {"good","good","study"};
    printf("sizeof(array_str): %d\n", sizeof(array_str));
    printf("array_str len: %d\n", sizeof(array_str) /sizeof(array_str[0]));
    
    展开全文
  • 最近发现一些代码, 甚至有一些专家代码, 在遍历数组时所用的数组长度竟然是 SizeOf(arr); 这不合适! 如果是一维数组、且元素大小是一个字节, 这样看不出错误, 譬如: var arr1: array[0..9] of Char; arr...
    最近发现一些代码, 甚至有一些专家代码, 在遍历数组时所用的数组长度竟然是 SizeOf(arr); 这不合适!

    如果是一维数组、且元素大小是一个字节, 这样用看不出错误, 譬如:
    var
      arr1: array[0..9] of Char;
      arr2: array[0..9] of Byte;
    begin
      ShowMessageFmt('%d,%d,%d,%d',[Length(arr1), SizeOf(arr1),
                                    Length(arr2), SizeOf(arr2)]);
      {显示结果: 10,10,10,10}
    end;
    
    但如果数组元素多于一个字节、或是多维数组的情况下, 就不行了, 举例:
    const
      arr1: array[0..9] of Integer = (1,2,3,4,5,6,7,8,9,10);
      arr2: array[0..1, 0..3] of Integer = ((1,2,3,4), (5,6,7,8));
    var
      arr3: array[Boolean] of Integer;
      arr4: array[Byte] of Integer;
    begin
      ShowMessage(IntToStr(Length(arr1)));    {10}
      ShowMessage(IntToStr(SizeOf(arr1)));    {40}
    
      ShowMessage(IntToStr(Length(arr2)));    {2}
      ShowMessage(IntToStr(Length(arr2[0]))); {4}
      ShowMessage(IntToStr(Length(arr2[1]))); {4}
      ShowMessage(IntToStr(SizeOf(arr2)));    {32}
    
      ShowMessage(IntToStr(Length(arr3)));    {2}
      ShowMessage(IntToStr(SizeOf(arr3)));    {8}
    
      ShowMessage(IntToStr(Length(arr4)));    {256}
      ShowMessage(IntToStr(SizeOf(arr4)));    {1024}
    end;
    
    我们倒是可以利用这个原理, 迅速知道多维数组的元素总数:
    const
      arr: array[0..1, 0..2, 0..3] of Integer = 
        (((1,1,1,1), (2,2,2,2), (3,3,3,3)), ((4,4,4,4), (5,5,5,5), (6,6,6,6)));
    begin
      ShowMessage(IntToStr(SizeOf(arr) div SizeOf(Integer))); {24}
    end;
    
    展开全文
  • 获取数组长度

    2019-03-24 23:27:56
    获取数组长度 获取动态数组长度strlen() string类对象的成员函数str.length(),str.size() 求整型数组长度length=sizeof(a)/sizeof(int)
  • vue中判断数组长度length报错

    万次阅读 2018-11-22 10:19:13
    {{pawnList.length&gt;0 ? pawnList.name : ''}} 报错:Error in render: "TypeError: Cannot read property 'length' of undefined"   解决办法: {{pawnList!== undefined &amp;&amp;...
  • 由于 JavaScript 的限制,Vue 不能检测以下变动的数组: 当你利用索引直接设置一个项时,例如:vm.items[indexOfItem] = newValue 当你修改数组长度时,例如:vm.items.length = newLength 因为vue的响应式是通过...
  • 头文件中,用于字符数组和字符串,返回的是字符串的长度,不会算上结束位置的'\0'。 #include <iostream> // #include <iomanip> #include <cstring> using namespace std; int main() { ...
  • 可以用size() 或者options.length $(“#name”)[0].options.length;或document.getelementbyid(“#name”).options.length; $(“#name option”).size() name: $(“select[name=name]”).size(); option: $(“#name ...
  • php中数组长度的获取 在php中获取数组长度方法很简单,php为我们提供了两个函数可以计算一维数组长度,如count,sizeof都可以直接统计数组长度哦,下面我们来看几个实例吧。 php如何获取数组的长度,使用php函数...
  • Java 字节数组长度length

    千次阅读 2019-05-19 03:17:08
    字节数组开始的长度length即为数组的size,但是当其被字符串对应的字符数组复制后,其长度就变为了字符串的长度 public class Buf_test { byte[] buf; int [] array; public void test() { buf = new ...
  • c++获取数组长度查找算法 介绍 (Introduction) In this article, we are going to learn about the various ways following which we can find array length in C++. 在本文中,我们将学习在C ++中可以找到数组长度...
  • 数组长度

    2018-03-02 15:02:14
    javas.length是针对java中数组的,length数组的一个属性,用来表示数组长度s.length()则是字符串的一个方法,用来返回字符串的长度的字符串是没有length属性的,只有length()方法数组length属性,而没有length...
  • 获取字符串长度:length(字段) 字符串转数组:collect...获取数组长度size(数组字段) 参考sql: set edate=2019-07-21 SET company=***; SET recomrecords=ods.ods_${hiveconf:company_RecomRecords; SET empl...
  • 数组长度:使用 .length ; int[] arr = new int[10]; int len = arr.length; 字符串长度:使用 .length(); String str = "Hello world"; int len = str.lenth(); 集合类长度:.size(); ArrayList<E> list = ...
  • ruby 数组长度统计If you are reading an article that is related to obtaining information about the instance of Array class then it is expected from you that you are aware of the basic things related to...
  • C++数组长度

    千次阅读 2017-07-25 11:51:07
    C++求数组长度为: ...为了方便使用,在C语言中常定义宏来求数组长度 #define ARR_LEN(array, length){ length = sizeof(array) / sizeof(array[0]); } 使用时,直接调用宏函数即可,如 int arr[]=
  • 测试数组长度

    2019-09-27 23:17:19
    通过sizeof函数 sizeof函数只能返回数组所占的字节数并不能直接返回数组的长度 例如: int a[2]; cout<<sizeof(a)<<sizeof(a[0])<...sizeof(a)/size(*p) ;返回数组长度 size...
  • 利用模板的特性,在编译期就获取到数组长度. 模板函数GetArrayLength template &lt;typename T, size_t N&gt; inline size_t GetArrayLength(const T(&amp;)[N]) { return N; } 示例 int array[] ...
  • 写这篇文章,主要是想提醒自己一下,在Java和C语言、C++中的数组长度求法是不一样的。希望诸位如果和我一样遇到三种其中两种语言时不要混淆了。 首先,在Java中要求一个数组的长度是可以直接用length属性来获取的int...
  • C++ 获取数组长度函数比较

    千次阅读 2019-11-10 17:12:56
    获取数组长度,是经常需要用到的函数。以下做一些常用的比较 1. size()与length(),获取字符串长度时,作用相同的。 2. sizeof()是用来获取对象所占内存的大小。 3. size()是获取字符元素的函数, 用于...
  • 字符串长度 与数组长度

    万次阅读 多人点赞 2018-12-20 18:48:37
    对于定义 char str[] = "abc\000def\n"(注:其中0为数字零),求字符串str的长度...1.数组长度的计算:整形数组大小:sizeof(数组名)/sizeof(数组类型)。 字符数组大小:strlen(数组名)+1,1因为要加上'/0',所以 ...
  • C++中如何求数组长度

    万次阅读 2018-04-03 23:19:45
    C++中没有直接提供求数组长度的方法,提供了sizeof(),begin(),end()等方法,可以供求数组长度使用。可以通过两种方式来求数组长度,这里使用模版类。一个是使用sizeof()做除法,另一种办法是通过end(),begin()做减法...
  • C的数组长度

    千次阅读 2018-11-05 10:10:25
    c语言中,定义数组后可以sizeof命令获得数组长度(可容纳元素个数) #include&lt;stdio.h&gt; int main(){ int a[] = {12,45,36,5,6}; int length = sizeof(a)/sizeof(a[0]); printf("%d\n&...
  • 获取二维数组长度

    2020-05-28 17:32:05
    public class array_length { ... System.out.println("第一维数组长度为:"+data.length); System.out.println("第二维数组长度为:"+data[0].length); } } 输出结果: 第一维数组长度为:2 ..

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 215,743
精华内容 86,297
关键字:

数组长度用size还是length