数位重组

来源:互联网 发布:沙钢收购大数据公司 编辑:程序博客网 时间:2024/06/10 17:38

问题:给定两个数组表示的整数,比如x=1234={1,2,3,4},y=2410={2,4,1,0},返回第一个整数的重组后的值最接近第二个整数,并且大于第二个整数。假设两个数组的大小相同,并且肯定能找到渡河条件的数。输入{1,2,3,4}和{2,4,1,0}返回{2,4,1,3}

OC算法实现:

////  GetClosestBigger.h//  Algorithm////  Created by han shuai on 2016/9/25.//  Copyright © 2016年 han shuai. All rights reserved.///** 10 */#import <Foundation/Foundation.h>@interface GetClosestBigger : NSObject- (NSArray *)getClosestBigger:(NSArray *)x y:(NSArray *)y;@end

////  GetClosestBigger.m//  Algorithm////  Created by han shuai on 2016/9/25.//  Copyright © 2016年 han shuai. All rights reserved.//#import "GetClosestBigger.h"@implementation GetClosestBigger- (NSArray *)getClosestBigger:(NSArray *)x y:(NSArray *)y{    NSMutableArray *res = [NSMutableArray array];        //对x升序    x = [x sortedArrayUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {        NSNumber *num1 = (NSNumber *)obj1;        NSNumber *num2 = (NSNumber *)obj2;        if (num1.intValue > num2.intValue) {            return NSOrderedDescending;        }        else if(num1.intValue < num2.intValue)        {            return NSOrderedAscending;        }        else        {            return NSOrderedSame;        }    }];        int index = 0;//扫描x    NSMutableArray *used = [NSMutableArray array];//记录x数字是否使用    for (int i = 0; i < x.count; i++) {        [used addObject:[NSNumber numberWithBool:NO]];    }        for (int i = 0; i < x.count; i++) {        index = 0;//每次从x开头扫描        //x的值已经被使用 或者 x的值比y的当前值小,index扫描到x的下一位        while (index < x.count && ([used[index] boolValue] || x[index] < y[i])) {            index++;        }                [res addObject:x[index]];//找到目标        used[index] = [NSNumber numberWithBool:YES];//记录此值已被使用                //大于情况 复制未使用的递增序列        if (x[index] > y[i]) {            for (int j = 0; j < x.count; j++) {                if (![used[j] boolValue]) {                    [res addObject:x[j]];                }            }            break;        }            }    return res;}@end


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 生完宝宝妊娠纹还在继续疯长怎么办 陌陌不能最小化观看直播视频怎么办 苏州园区公积金密码忘记了怎么办 房产企业申请破产买的房子怎么办 被业务员骗了买了保险怎么办 孩子特别害怕老师严厉的批评怎么办 4k电视看有线电视不清晰怎么办 移动9.9流量4g网用完了怎么办 东方头条验证码已经被注册了怎么办 打王者两个人吵架被夹在中间怎么办 顾客拿过期的食品过来投诉怎么办 老婆总是埋怨我父母我该怎么办? 代款公司如果使用暴力追债怎么办 法院拍卖款分配有疑意怎么办 法院拍卖买到的房子里有户口怎么办 新注册手机邮箱不和电脑同步怎么办 移动4g盒当月流量封顶怎么办 昆仑加油卡密码忘记了怎么办 昆仑银行e盾密码忘记了怎么办 中石化加油卡密码忘记了怎么办 壳牌加油卡密码忘了怎么办 中国石化加油卡密码忘了怎么办 中石化加油卡密码忘了怎么办 中石化加油卡需要密码忘了怎么办 求不熟领导办事送礼不收怎么办 送礼给领导不收好像很生气怎么办 加油卡没有密码加油后锁住怎么办 个人怎么办中石化油卡怎么开公司票 中石化副卡挂失后钱怎么办 中石化的加油卡丢了怎么办 得仕卡过期3年了怎么办 如果在超市买到过期商品怎么办 华润万家买的豆干过期了吃了怎么办 华润万家购物卡过期了怎么办 杜鹃花水浇多了树叶都掉了怎么办 游客行程因天气原因无法进行怎么办 携程旅游途中提前结束行程怎么办 小区附近商家卖东西很吵怎么办? 小区门口卖东西的喇叭太吵怎么办 我老婆是二婚带的小孩怎么办户口 ck手表带了脱不下来怎么办