lua里面求int数组的union,diff,inter,distinct 方法实现

function lua_union(union_source,union_target)
    if type(union_source)~=‘table‘ or type(union_target)~=‘table‘ then
        return {};
    end;
    if #(union_source)==0 and #(union_target)==0 then
        return {};
    end;
    for i=1,#(union_target) do
        local flag=true;
        for j=1,#(union_source) do
            if union_target[i]==union_source[j] then
                flag=false;
                break;
            end;
        end;
        if flag==true then
            table.insert(union_source,union_target[i])
        end;
    end;
    return union_source;
end;

function lua_diff(diff_source,diff_target)
    if type(diff_source)~=‘table‘ or type(diff_target)~=‘table‘ then
        return {};
    end;
    if #(diff_source)==0 and #(diff_target)==0 then
        return {};
    end;
    for i=#(diff_source),1,-1 do
        for j=1 ,#(diff_target) do
            if diff_source[i]==diff_target[j] then
                table.remove(diff_source,i);
            end;
        end;
    end;
    return diff_source;
end;

function lua_distinct(distinct_source)
    if type(distinct_source)~=‘table‘ then
        return {};
    end;
    for i=1,#(distinct_source) do
        for j=#(distinct_source),i+1,-1 do
            if distinct_source[i]==distinct_source[j] then
                table.remove(distinct_source,j);
            end;
        end;
    end;
    return distinct_source;
end;

function lua_inter(inter_source,inter_target)
    if type(inter_source)~=‘table‘ or type(inter_target)~=‘table‘ then
        return {};
    end;
    for i=#(inter_source),1,-1 do
        for j=1,#(inter_target) do
            if inter_source[i]==inter_target[j] then
                table.remove(inter_source,i);
            end;
        end;
    end;
    return inter_source;
end;

local result1=lua_union({},{3,3});
local result2=lua_diff({1,2,3,4,5},{2,3});
local result3=lua_distinct({1,1,2,1}) ;
local result4=lua_inter({1,2,3,4,5},{1,2});
时间: 2024-12-21 22:37:39

lua里面求int数组的union,diff,inter,distinct 方法实现的相关文章

C#-求int数组中连续偶数列的个数

例如:[3, 3, 2, 2, 2, 4, 3, 5, 4, 6, 3]=>2,2,2,4;4,6 结果为2     [3, 3, 2,3, 2, 2, 4, 3, 5, 4, 6, 3]=>2;2,2,4;4,6 结果为3 实现思路: 将数组取余转换为01数组[3, 3, 2, 2, 2, 4, 3, 5, 4, 6, 3]=>[1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1] 算出连续为0的个数就是偶数列的个数 int[] arr = { 3, 3, 2, 2, 2,

求int型数组和最大子数组 续

之前的博文里已经实现过该程序的构思.编译.运行,本次就不再重复与之相雷同的内容. 题目:与别人借组,借助求int型数组最大和子数组的问题,考虑大数溢出和int取值范围的问题 要求: 调试程序  当子数组所含元素值超过int型数组取值范围时,会出现什么情况? 实现: 在接触到这个问题之前,肯定的说,我从来没有考虑过这个问题,不是自己不知道int型数值的取值范围,而是自己根本没有注意过这个问题,也没有想过数的取值会超过这个范围.知道这个“问题”后我做了下面的事情: a.和同学借组,查阅相关资料,了解

黑马基础阶段测试题:定义一个int类型的数组,数组中元素为{5,7,3,9,4}。求出数组中的最小值,并判断最小值是否为偶数,如果是偶数则输出“最小值为偶数”,如果不是偶数则输出“最小值为奇数”。打印如下:

package com.swift; import java.util.Arrays; public class ArrayTest { public static void main(String[] args) { /* * 定义一个int类型的数组,数组中元素为{5,7,3,9,4}. * 求出数组中的最小值,并判断最小值是否为偶数,如果是偶数则输出"最小值为偶数",如果不是偶数则输出"最小值为奇数".打印如下 */ int arr[]= {5,7,3,9,4

java实现求一个数组里最大值和最小值之前缺省的数的算法

问题描述: 求一个数组里最大值和最小值之间缺省的数,例如 int arrDemo = {1, 3, 7};  那么就要输出最小值1和最大值7之间缺少的数字2,4,5,6 代码如下,有更好的思路欢迎大家在评论区留言讨论 1 package test; 2 3 public class Test { 4 5 static int[] array = { 6 -10,0,3,3,9 7 }; 8 9 private static void printEmptyItems(int[] array) {

《团队开发一(求一个数组的连续的子数组之和的最大值)》

(1)设计思想:一般的,求一个数组的最大子数组之和即是按数组顺序依次让前几个数的和与下一个数进行比较,设一变量来装每次比较后的较大的数,依此进行到数组终端:但是考虑到求的是连续的子数组,则应该想到除了在按顺序上的连续外,还得考虑到末端与首端的连续,所以按数组顺序依次求解得到的未必就是连续的最大的子数组之和,故此必须在此种情况下也求解出最大子数组之和,方法即是同时从数组的两端依次进行求出各自的最大子数组之和,然后在相遇前求和后与之前所求的最大子数组之和依次相比较,取它们中最大的一个作为连续的最大子

[经典面试题][淘宝]求首尾相连数组的最大子数组和

题目 给定一个由N个整数元素组成的数组arr,数组中有正数也有负数,这个数组不是一般的数组,其首尾是相连的.数组中一个或多个连续元素可以组成一个子数组,其中存在这样的子数组arr[i],-arr[n-1],arr[0],-,arr[j],现在请你这个ACM_Lover用一个最高效的方法帮忙找出所有连续子数组和的最大值(如果数组中的元素全部为负数,则最大和为0,即一个也没有选). 输入: 输入包含多个测试用例,每个测试用例共有两行,第一行是一个整数n(1<=n<= 100000),表示数组的长度

求一维数组的最大子数组1(结对开发)

题目:返回一个整数数组中最大子数组的和. 要求: 输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 求所有子数组的和的最大值.要求时间复杂度为O(n) 发表一篇博客文章讲述设计思想,出现的问题,可能的解决方案(多选).源代码.结果截图.总结. 结对开发的伙伴: 博客名:Mr.缪 姓名:缪金敏 链接:http://www.cnblogs.com/miaojinmin799/ 分析: 如果按照最笨的方法就是一个一个的比较先比较一个数的然后二个

求一个数组的子数组的最大和

如题:求一个数组的子数组的最大和,要求O(n)时间复杂度. 由于有了O(n)时间复杂度的限制,所以暴力求解的O(n^2)方法肯定不行.再考虑递归求一个数组a[n]的子数组的最大和,可以分解为a[i]子数组的最大和以及a[n-i-1]之间的某种情况 a[n]的子数组最大和等于a[i]子数组的最大和: a[n]的子数组最大和等于a[n-i-1]: a[n]的子数组最大和跨a[i]和a[n-i-1]: 递归实现的时间复杂度为O(nlg(n)).最后考虑时间复杂度为O(n)的动态规划实现. /** *

用 二分+哈希 求后缀数组

个人感觉后缀数组的板子太难背了,听了小火车讲二分+哈希可以实现求后缀数组,貌似很好理解,代码如下. 1 #include<iostream> 2 #include<cstdio> 3 #include<cstdlib> 4 #include<cstring> 5 #include<cmath> 6 #include<algorithm> 7 #include<queue> 8 #include<vector>