[브러시 질문일기] 67. 이진 합산

제안이 도착했습니다. 친구를 찾아 픽업하세요! 2022년 봄학기 채용 체크인 이벤트에 참여하고 있습니다. 자세한 이벤트 내용 을 보려면 클릭 하세요 .

[브러시 질문일기] 67. 이진 합산

이 리뷰 일기의 15번째 기사 제목: 67. 이진 합산 , 단순

1. 주제 설명:

저녁에 운동한 후 계속 질문을 보세요 . 이 질문은 제목이 너무 명확하고 설명이 매우 짧고 간단한 질문인 것 같습니다 . 이것은 간단한 질문입니다. 머리를 바꿔봅시다 .

상호 신뢰 - 신뢰가 어디서 오는지 모르겠다

그러나 우리는 가볍게 생각할 수 없으며 여전히 이 질문이 제시하는 핵심 내용과 테스트 포인트를 주의 깊게 분석해야 합니다.

2. 사고 분석:

1. 이 질문은 어떤 생각을 조사합니까? 당신의 생각은 무엇입니까?

제목에 제공된 정보에는 다음과 같은 요점이 있습니다.

  • 주어진 이진수는 모두 문자열 이고 우리가 반환하는 것도 문자열이어야 합니다.
  • 문자열의 숫자는 0과 1 만 있고, 주어진 문자열은 선행 0을 포함하지 않으며, 배열의 길이는 1에서 10까지의 4제곱 이므로 이 질문에 대한 비정상 입력을 고려할 필요가 없습니다. .

우리의 예를 확인하십시오: a = "1010", b = "1011"

이 예를 보면 **a 배열의 길이는 b 배열의 길이와 같으며 ** 중간은 carry를 포함하고 최상위 비트도 carry를 포함합니다.

다음 예에서 a 배열의 길이가 b 배열의 길이보다 작거나 b 배열의 길이가 a 배열의 길이보다 작습니다 . 기본적으로 위는 a 배열입니다. , 다음은 b 배열입니다.

일반적으로 다음 사항을 고려해야 합니다.

  • 렌 (a) == 렌 (b)
  • len (a) <len (b)
  • len (a) > len (b)
  • 휴대의 취급

3. 코딩

위의 논리와 분석에 따르면 다음 코드로 변환할 수 있습니다.

인코딩은 다음과 같습니다.

func addBinary(a string, b string) string {
    lenA,lenB := len(a),len(b)
    n := 0
    if lenA > lenB {
        n = lenA
    }else{
        n = lenB
    }

    res := ""
    jinwei := 0
    // 使用较长数组的长度来控制循环
    for i:=0; i<n; i++ {
        // 对应位数 a 数组上有值,那就进行相加
        if i<lenA {
            jinwei += int(a[lenA-i-1] - '0')
        }
        // 对应位数 b 数组上有值,那就进行相加
        if i<lenB {
            jinwei += int(b[lenB-i-1] - '0')
        }
        // a 数组和 b 数组对应位置上相加后,需要填在该位置的值 
        res = strconv.Itoa(jinwei % 2) + res
        // 需要向前进位的数据
        jinwei = jinwei / 2
    }

    // 判断最后是否需要进位
    if jinwei > 0{
        res = "1" + res
    }

    return res
}
复制代码

위의 코딩을 읽어보면 코딩 전 생각과 분석을 바탕으로 하는 코딩임을 알 수 있습니다.

작은 것에서 큰 것을 보려면 코딩하기 전에 계획 설계를 명확하고 실용적으로 만들고 모든 세부 사항과 사각 지대를 하나씩 분해하여 코딩 후 위험을 줄일 필요가 있습니다.

4. 요약:

이 질문 의 시간 복잡도 는 분명히 O(n)이고, n은 더 긴 배열의 길이이며, 공간 복잡도는 O(1)이며, 이는 일정한 수준의 메모리 소비를 도입합니다 .

원래 제목 주소: 67. 이진 합계

나는 오늘 여기, 내가 배운 것, 편차가 있으면 나를 수정하십시오.

좋아요, 팔로우, 즐겨찾기에 오신 것을 환영합니다.

친구 여러분, 여러분의 지원과 격려는 제가 지속적으로 공유하고 품질을 향상시킬 수 있는 원동력입니다.

자, 이번에야말로

기술은 열려 있고 우리의 사고 방식은 열려 있어야 합니다. 변화를 수용하고 태양 아래에서 살아가며 앞으로 나아가십시오.

꼬마 악마소년 네자 입니다 좋아요 , 팔로우, 수집 환영합니다 다음에 또 만나요~

추천

출처juejin.im/post/7079773017902956558