两数之和 II - 输入有序数组

示例 1:

输入:numbers = [2,7,11,15], target = 9
输出:[1,2]
解释:2 与 7 之和等于目标数 9 。因此 index1 = 1, index2 = 2 。
示例 2:

输入:numbers = [2,3,4], target = 6
输出:[1,3]

class Solution:
    def twoSum(self, numbers: List[int], target: int) -> List[int]:
        n=len(numbers)
        for i in range(n):
            low,high=i+1,n-1
            while low <= high:
                mid=(low+high) // 2
                if numbers[mid] == target-numbers[i]:
                    return[i+1,mid+1]
                elif (target-numbers[i]) < numbers[mid]:
                    high=mid-1
                elif (target-numbers[i]) > numbers[mid]:
                    low=mid+1
        return [-1, -1]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HLS(High Level Synthesis)是一种将高级语言代码转换为硬件电路的技术。在HLS中实现两个输入数组相加可以采用以下步骤: 1. 定义输入和输出端口,以及数组大小: ```C++ void array_add(int a[], int b[], int c[], int n) { #pragma HLS INTERFACE axis port=a #pragma HLS INTERFACE axis port=b #pragma HLS INTERFACE axis port=c #pragma HLS INTERFACE s_axilite port=n bundle=control #pragma HLS INTERFACE s_axilite port=return bundle=control ``` 2. 使用HLS指令进行流水线、并行等优化: ```C++ #pragma HLS PIPELINE II=1 #pragma HLS LOOP_TRIPCOUNT min=1 max=1024 for (int i = 0; i < n; i++) { #pragma HLS UNROLL factor=2 c[i] = a[i] + b[i]; } ``` 3. 编译实现为硬件电路。 完整代码示例: ```C++ #include "ap_axi_sdata.h" typedef ap_axis<32, 2, 5, 6> int_stream; void array_add(int_stream a[], int_stream b[], int_stream c[], int n) { #pragma HLS INTERFACE axis port=a #pragma HLS INTERFACE axis port=b #pragma HLS INTERFACE axis port=c #pragma HLS INTERFACE s_axilite port=n bundle=control #pragma HLS INTERFACE s_axilite port=return bundle=control #pragma HLS PIPELINE II=1 #pragma HLS LOOP_TRIPCOUNT min=1 max=1024 for (int i = 0; i < n; i++) { #pragma HLS UNROLL factor=2 c[i].data = a[i].data + b[i].data; c[i].keep = a[i].keep & b[i].keep; c[i].strb = a[i].strb & b[i].strb; c[i].user = a[i].user & b[i].user; c[i].last = a[i].last & b[i].last; } } ``` 其中,`ap_axis`是HLS中定义的一种数据类型,用于描述AXI总线中的数据流。`PIPELINE`指令用于对循环进行流水线化,`LOOP_TRIPCOUNT`指令用于指定循环的次数范围,`UNROLL`指令用于对循环进行展开以提高并行度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值